AngularJS: Access directive's isolated scope from parent controller

前端 未结 1 1403
死守一世寂寞
死守一世寂寞 2020-12-24 06:04

I want to write a directive with isolated scope but also want to make that scope available for the parent scope\'s controller. I found this solution:

1条回答
  •  囚心锁ツ
    2020-12-24 07:01

    To maintain proper separation of concerns, you should not mix scopes. Not to mention that it will be hard to synchronize. To summarize: your directive should not know anything about the parent scope (or its controller) and your controller should not know anything about a directive's internals. They are separate components in separate layers.

    The proper way to communicate between a controller and a directive is through directive attributes. In the case of a popup, say, this can be done with a simple boolean value.

    The controller and directive:

    app.directive('popupbutton', [function() {
      return {
        restrict: "E",
        scope: { isOpen: "=" },
        template: 'Toggle
    Open? {{isOpen}}' }; }]); app.controller('MainCtrl', function($scope) { $scope.isOpen = false; });

    And the markup:

    
    

    This method requires no logic, works out of the box, and maintains clean separation of concerns. Here's an updated plunker: http://plnkr.co/edit/otIaGCLmiNdGcYEgi60f?p=preview

    0 讨论(0)
提交回复
热议问题