加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – 如何使用Angular-Strap创建一个带控制器的模态?

发布时间:2020-12-17 10:22:41 所属栏目:安全 来源:网络整理
导读:我正在努力寻找使用Angular-Strap模态/控制器的正确方法. 是的,调用代码可以注入$scope,使其可用于模态.但是有一些问题. myModal = $modal({scope: $scope,template: 'template.html',show: false,backdrop: "static",keyboard: false,persist: true }); 这
我正在努力寻找使用Angular-Strap模态/控制器的正确方法.

是的,调用代码可以注入$scope,使其可用于模态.但是有一些问题.

myModal = $modal({
scope: $scope,template: 'template.html',show: false,backdrop: "static",keyboard: false,persist: true

});

这将使用潜在的仅模态方法和属性污染调用控制器.

我通常使用“controllerAs”,因此首先甚至没有$scope注入模态!

您可以创建一个新的$scope,然后将方法插入其中,但同样需要将$scope注入父控制器.坏坏.

如果我在模态模板中使用ng-controller,我可以拥有我的控制器.但是他给了我另一个问题:现在我无法将数据注入到模态控制器中,并且我的调用代码无法知道何时关闭模态并且从模态返回数据也变成了一件苦差事(涉及工厂只是为了保持父和子控制器数据同步).

我真的很挣扎如何使这成为最好的方式.

有任何想法吗?

干杯

更新

这就是我现在这样做的方式:

在我的模板中,我制作了一个打开模态的指令.
例:

<my-modal
        on-update="ctrl.OnDialogUpdate">
</my-modal>

所以基本上该指令调用我的模态,当模态关闭或想要返回结果时,它调用指令参数中指定的方法.

这是指令的外观:

(function() {

'use strict';

angular.module('app').directive('myModal',myModal);

function myModal(){

    return {

        restrict: 'E',// The modal callback specified in the directive tag
        scope: {
            onUpdate: '&?'
        },replace: true,// This is the template for the directive,not the modal
        templateUrl: 'button.html',controllerAs: 'ctrl',bindToController: true,compile: function (element,attrs) {

            return function (scope,element,attrs) {

            };
        },/*@ngInject*/
        controller: function($scope,$log,$aside){

            var self = this;

            var myDialog = $aside({

                // Dialog template
                template: 'my-modal.template.html',animation: 'am-fade-and-slide-right',placement: 'right',backdrop: true,html: true,container: '',scope: $scope
            });


            // Opens modal
            self.ShowDialog = function(){
                myDialog.$promise.then(function() {
                    myDialog.show();
                })
            };


            // Expose Update() method to the dialog template
            $scope.Update = function(){

                if(angular.isFunction(self.onUpdate) ) {

                    self.onUpdate()();
                }

            }

        }
    }

}

})();
只需使用’controller’选项:
$scope.showModal = function() {
  $modal({
    title: 'My Title',content: 'My Content',show: true,controller: 'ModalCtrl'
  });
};

Here’s a plnkr

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读