Angularjs 如何使用控制器创建指令,使作用域可以工作,而不必在视图中使用$parent?

Angularjs 如何使用控制器创建指令,使作用域可以工作,而不必在视图中使用$parent?,angularjs,angularjs-directive,angularjs-scope,angularjs-controller,Angularjs,Angularjs Directive,Angularjs Scope,Angularjs Controller,我需要包含一个控制器作为模态的属性。在我的示例中,除非我使用$parent.showmodel=false,否则showmodel不在范围内。为了其他开发人员的工作,我不能在视图中使用$parent。应用程序中也有许多地方使用了具有不同控制器的其他模态,以相同的方式使用 玉 指示 我建议您创建一个Singleton工厂服务 比如: $modal 注册表对话框(键) showModal(键) hideModal() 这样,只要您真的需要,$modal服务就可以注入任何控制器。事实上,其他控制器

我需要包含一个控制器作为模态的属性。在我的示例中,除非我使用$parent.showmodel=false,否则showmodel不在范围内。为了其他开发人员的工作,我不能在视图中使用$parent。应用程序中也有许多地方使用了具有不同控制器的其他模态,以相同的方式使用

玉 指示
我建议您创建一个Singleton工厂服务

比如:

$modal

  • 注册表对话框(键)
  • showModal(键)
  • hideModal()
这样,只要您真的需要,$modal服务就可以注入任何控制器。事实上,其他控制器不需要知道有关$modal服务的任何信息,甚至不需要知道它是否存在

接下来,我建议您实现用于触发和关闭模态对话框的声明性指令

任何需要模态对话框功能的应用程序都需要将ngModal添加为模块依赖项,然后向页面添加一些指令:

var app = angular.module('myApp', ['ngModal']);
...
<body ng-app="myApp">
     <button ng-modal-show="OpenFileDialog">Click to Open Dialog 1</button>
     <div ng-modal="OpenFileDialog"> ... <button ng-modal-close>Close Dialog</button> </div>
var-app=angular.module('myApp',['ngModal']);
...
单击以打开对话框1
... 关闭对话框
下面是一个非常简单的例子:

.directive 'myModal', ->
    restrict: 'A'
    scope: {
        myModal: '='
    }
    link: (scope, element, attrs) ->

        scope.$watch 'myModal', (current, previous) ->
            if scope.myModal is true
                element.css(display: 'block')
            else
                element.css(display: 'none')
var app = angular.module('myApp', ['ngModal']);
...
<body ng-app="myApp">
     <button ng-modal-show="OpenFileDialog">Click to Open Dialog 1</button>
     <div ng-modal="OpenFileDialog"> ... <button ng-modal-close>Close Dialog</button> </div>