在带有隔离范围的指令中使用ng-repeat

时间:2014-03-23 18:21:06

标签: javascript angularjs angularjs-directive angularjs-scope angularjs-ng-repeat

具有隔离范围的指令内的

ng-repeat没有获取通过'='绑定传递的属性。

HTML:

<body ng-controller="myCtrl">
    <div my-directive list="users">
        <ul>
            <li ng-repeat="item in list">
                {{item.name}}
            </li>
        </ul>
    </div>
</body>

JS:

var app = angular.module('myApp', []);

app.controller('myCtrl', function ($scope) {
    $scope.users = [
        { name: 'John Doe'},
        { name: 'Jane Doe' },
        { name: 'Jesse Doe' }
    ];
});

app.directive('myDirective', [function() {
    return {
        restrict: 'A',
        scope: {
            list: '='
        },
        link: function(scope, element, attrs) {

        }
    }
}]);

以上代码在角度1.0.8下工作正常: http://jsfiddle.net/shazmoh/4DN39/7/

但不是角度1.2.14: http://jsfiddle.net/shazmoh/4DN39/6/

我错过的'1.2.x'改变了什么?

1 个答案:

答案 0 :(得分:0)

来自migration to 1.2 guide

  

隔离范围仅暴露于具有范围属性的指令
  没有隔离范围的指令不能获得隔离范围   在同一元素上隔离指令。如果您的代码依赖于此   行为(非隔离指令需要从内部访问状态)   隔离范围),更改isolate指令使用范围locals   明确地传递这些。

所以,用&gt; 1.2.0,孤立的指令完全隔离