$ scope元素在指令之外不可见(使用$ scope:false)

时间:2016-07-15 12:41:48

标签: angularjs angularjs-directive

我有一个使用父范围的简单指令。但是我无法访问指令的范围。我做错了什么?

<p>myFrm2.$name: {{myFrm2.$name}}</p>

<pane>
  <form name="myFrm2" id="myFrm2">
    <input type="text" ng-model="fld2">
  </form>
</pane>

https://plnkr.co/edit/AIUK2tBiiVs21so2k5JR?p=preview

这是指令:

.directive('pane', function() {
        return {
          restrict: 'E',
          transclude: true,
          scope: false,
          template: '<div style="border: 1px solid black;">' +
            '<div style="background-color: gray; color:white">Test Directive</div>' +
            '<ng-transclude></ng-transclude>' +
            '</div>'
        };
      })

当我在我的指令中设置$ scope:false时,我认为范围是在指令和它的父范围之间共享。

1 个答案:

答案 0 :(得分:1)

使用对象模型或controllerAs别名时问题消失。

对象示例

控制器中的

  $scope.forms ={};

在视图中

<p>myFrm2.$name: {{forms.myFrm2.$name}}</p>

<pane>
  <form name="forms.myFrm2" id="myFrm2">
    <input type="text" ng-model="fld2">
  </form>
</pane>

请注意,您应始终使用ng-model中的对象

DEMO