我正在尝试在具有隔离范围的指令中使用 ng-repeat,但我似乎无法使其正常工作。
当我在指令中添加隔离范围时,ng-repeat 似乎无法看到items
,我理解。
但是,即使我使用=
隔离范围,我也会收到错误消息:
Error: Syntax Error: Token 'Object' is unexpected, expecting []] at column 9 of the expression [[object Object],[object Object],[object Object]] starting at [Object],[object Object],[object Object]].
这是在没有隔离范围的指令中工作的 ng-repeat 的 jsFiddle:
http://jsfiddle.net/urlology/DA47k/3/
并使用=
隔离范围:
http://jsfiddle.net/urlology/CL4AT/11/
作为代码片段:
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
$scope.open = false;
$scope.items = [{
name: 'A',
value: 1
},
{
name: 'B',
value: 2
},
{
name: 'C',
value: 3
}
];
});
app.directive('myDirective', ['$compile', function($compile) {
return {
restrict: 'A',
link: function(scope, element, attrs) {
var items = attrs.items;
console.log('items %o', items);
var itemLabelField = attrs.itemLabelField
var template =
'<ul>' +
'<li data-ng-repeat="item in ' + items + '">' +
'{{item.' + itemLabelField + '}}' +
'</li>' +
'</ul>';
// Render the template.
element.html('').append($compile(template)(scope));
}
}
}]);
<html ng-app="myApp">
<head>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.8/angular.min.js"></script>
</head>
<body ng-controller="myCtrl">
<div my-directive items="items" item-label-field="name"></div>
</body>
</html>
我究竟做错了什么?