我在一個較大的項目上遇到了這個問題,並且提出了最簡單的示例。如果數據發生變化,指令中的ng-repeat不會更新
我有一個控制器,它有一些數據。這些數據被輸入到指令中,並且應該使用本地的ng-repeat來顯示。但是,當指令控制器運行時,它尚未分析角度變量,因此不會呈現重複。
如何讓它工作,以便重複使用需要預解析的外部變量?
這是一個小提琴。請確保您有打開控制檯,就說明它是未定義功能運行時,但規定在1秒鐘之後:http://jsfiddle.net/paulocoelho/xqLAs/2/
這裏我JS:
var module = angular.module('testApp', [])
.directive('test', function() {
return {
restrict: 'E',
template: '<p ng-repeat="x in sl">{{x.val}}</p>', // this wont work :(
scope: {
sl: '@sl'
},
link: function ($scope, $element, $attrs) {
console.log($attrs.sl); // this will return undefined
setTimeout(function(){
console.log($attrs.sl); // this will return the correct list
},1000);
}
};
});
function sweetCtrl($scope){
$scope.someList =
[
{"val":"a"},
{"val":"b"},
{"val":"c"},
{"val":"d"},
{"val":"e"},
{"val":"f"}
];
}
這裏是我的DOM
<div ng-app="testApp" ng-controller="sweetCtrl">
<p>raw list: {{someList}}</p>
<p>repeat list:</p>
<test sl="{{someList}}"></test>
</div>
編輯: 我的以前的代碼有一個錯誤,其中inputdata應該讀取sl。
了溶液的小提琴是在這裏:http://jsfiddle.net/paulocoelho/xqLAs/3/
是的,就是這樣。整個@,=和東西讓我感到困惑。謝謝你:)我會用新的小提琴更新我的代碼 – PCoelho 2013-03-01 22:55:40