【问题标题】:Accessing Controller Scope from child Directive in Angular从 Angular 中的子指令访问控制器范围
【发布时间】:2015-10-05 17:50:10
【问题描述】:

我想在不使用 $parent 的情况下访问控制器范围。从我阅读的所有内容中,我认为我可以将其传递到隔离范围,如下所示:

  <body ng-app="app" ng-controller="myController">
    <h1>
      {{message}}
    </h1>
    <mydir></mydir>

angular.module('app', [])

.controller('myController', function($scope){
  $scope.message = "Hello World";
})

.directive('mydir', function(){
  return {
    restrict: "E",
    scope: {
      message: "=",
    },
    controller: function($scope){
      $scope.goodbye = function(){
        $scope.message = "Goodbye World";
      }
    },
    template: "<button ng-click='goodbye()'>Say Goodbye</button>"
  }
})

但是,我无法获取更新范围的 message 属性的指令。 Plnkr link.

【问题讨论】:

  • 控制器对页面/部分具有特定的行为,并且指令是通用的,因此应该允许重用。指令不能依赖于控制器范围。您必须按照 Pankaj Parkar 的建议作为参数传递。

标签: angularjs angularjs-directive controller directive isolate-scope


【解决方案1】:

由于可以使用attribute 传递隔离范围值,因此您需要在指令元素上具有message 属性,该属性将具有范围变量名称。

<mydir message="message"></mydir>

Demo Plunker

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-28
    • 1970-01-01
    • 2015-09-09
    • 2018-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多