当前位置: 首页 > 面试题库 >

AngularJS $ modalInstance-我可以在一个控制器中执行此操作吗?

郑嘉悦
2023-03-14
问题内容

我花了一些时间在AngularJS
Bootstrap弹出窗口上玩耍,并且意图很不错,但是我想做的就是将它绑定,并且它的依赖脚本绑定到同一控制器,我无法正常工作现在是关闭按钮。如果我创建一个NEW控制器,并注入$
modalInstance,它可以很好地工作,并且我可以连接关闭按钮而没有任何问题,但是我不想要第二个控制器,这似乎过于复杂:我想要所有的控制器逻辑在formController中。

为什么我实际上要两个控制器?在我看来,在两个控制器之间传递范围似乎太过分了,项目越大,变得越难以管理。我是否在试图不必要地简化它?:)

剧本:

(function(){
    var app = angular.module('ngModalDemo', ['ui.bootstrap']) 
    .controller('formController', function($scope, $modal){
        $scope.openModal = function () {                        
            var modalInstance = $modal.open({
                templateUrl: 'SomeModal.html',
                controller: 'formController'                                            
            });
        };
        $scope.closeModal = function () {
            //  Code needed here :)
        };
    })
})();

HTML正文(出于演示目的,请使用脚本中的HTML):

    <div ng-controller="formController">
        <button class="btn btn-default" ng-click="openModal()">Let's do some stuff!</button>

        <script type="text/ng-template" id="SomeModal.html">
            <div class="modal-header">Do some stuff in this modal y'all.</div>
            <div class="modal-footer">
                <button class="btn btn-info" ng-click="closeModal()">Close</button>
            </div>
        </script>
    </div>

答案基于Kaspars的输入:)

    (function(){
            var app = angular.module('ngModalDemo', ['ui.bootstrap']) 
            .controller('formController', function($scope, $modal, $log){
                $scope.openModal = function () {                        
                    var modalInstance = $modal.open({
                        templateUrl: 'SomeModal.html',
                        controller: [
                            '$scope', '$modalInstance', function($scope, $modalInstance){
                                $scope.closeModal = function () {
                                    $modalInstance.close();
                                };
                            }
                        ]                           
                    });
                };
            })
        })();

问题答案:

我一直在同一个问题上挣扎,而我想到的最好的办法就是使用匿名函数作为模式控制器。这样,所有逻辑都在同一控制器中,您不必为每个模式窗口创建单独的控制器。

看起来像这样:

(function(){
    var app = angular.module('ngModalDemo', ['ui.bootstrap']) 
    .controller('formController', function($scope, $modal){
        $scope.openModal = function () {                        
            var modalInstance = $modal.open({
                templateUrl: 'SomeModal.html',
                controller: [
                    '$scope', '$modalInstance', 'data', function($scope, $modalInstance, data) {
                        $scope.data = data;
                        $scope.ok = function() {
                            $modalInstance.close();
                        };
                        $scope.closeModal = function() {
                            $modalInstance.dismiss();
                        };
                    }
                ]
            });
        };
    })
})();

PS。尚未测试上面的代码,只需将其与您提供的代码以及我的一个项目的片段放在一起。



 类似资料:
  • 问题内容: 我尝试在各种线程上进行搜索,但是我不能最终理解这一点。 我尝试执行上述代码段,但没有用。我可以做这样的事情吗?如果是,那么我在这里做错了什么? 问题答案: 只允许使用一个控制器,它将作为中的控制器分配给加载模板。无需在模板中为主控制器定义。 如果需要定义多个控制器,建议您定义一个主/父控制器,并在中使用它,然后使用指令在模板中已有其他控制器。 要么… 使用Angular UI的 UI-

  • 问题内容: 一个控制器可以使用另一个控制器吗? 例如: 该HTML文档仅在文件中打印由控制器传递的消息。 控制器文件包含以下代码: 它只是打印当前日期; 如果我要添加另一个控制器,它将特定格式的日期返回给,那么该怎么做呢?DI框架似乎与服务有关。 问题答案: 控制器之间有多种通信方式。 最好的一种可能是共享服务: 另一种方法是在范围内发出事件: 在这两种情况下,您都可以与任何指令进行通信。

  • 问题内容: 一个控制器可以使用另一个控制器吗? 例如: 该HTML文档仅在文件中打印由控制器传递的消息。 控制器文件包含以下代码: 它只是打印当前日期; 如果我要添加另一个控制器,它将特定格式的日期返回给,那么该怎么做呢?DI框架似乎与服务有关。 问题答案: 控制器之间有多种通信方式。 最好的一种可能是共享服务: 另一种方法是在范围内发出事件: 在这两种情况下,您都可以与任何指令进行通信。

  • 问题内容: 在模块内,控制器可以从外部控制器继承属性: 示例如下: 无效链接 : http : //blog.omkarpatil.com/2013/02/controller-inheritance-in- angularjs.html 模块内部的控制器也可以从同级继承吗? 由于需要将函数用作第一个参数,并且找不到对的引用,因此第二个代码不起作用。 问题答案: 是的,它可以,但是您必须使用该服务

  • 问题内容: 我了解AngularJS会在某些代码中运行两次,有时甚至更多,例如事件,不断检查模型状态等。 但是我的代码: 执行两次,将2条记录插入我的数据库。很显然,我一直在为此奋斗,我一直在学习! 问题答案: 应用路由器将导航指定为如下所示: 但我在: 这使控制器消化了两次。从HTML中删除属性可以解决此问题。或者,可以从路由指令中删除该属性。 使用选项卡式导航时也会出现此问题。例如,可能包含:

  • 本文向大家介绍iOS是否可以 在一个视图控制器中嵌入两个tableview控制器?相关面试题,主要包含被问及iOS是否可以 在一个视图控制器中嵌入两个tableview控制器?时的应答技巧和注意事项,需要的朋友参考一下 答案:一个视图控制只提供了一个View视图,理论上一个tableViewController也不能放吧, 只能说可以嵌入一个tableview视图。当然,题目本身也有歧义,如果不是