使用简单指令关闭
我有一个简单的闭包,它有几个属性 hello 和 items。当我绑定(bind) hello world 时工作正常,但当我使用 ng-repeat 时列表不会呈现。
(function() {
var app = angular.module('safety-plus-task-list', []);
app.directive('taskList', function () {
return {
restrict: "E",
templateUrl: "/Task/TaskList",
scope: {
},
controller: function ($http, $scope, $element, $attrs) {
this.hello = "HELLO WORLD";
this.items = [
"gravida nisl, id fringilla neque ante vel mi.",
"quam gravida nisl, id fringilla neque ante vel mi."];
},
controllerAs: "task"
};
});
})();
指令内部代码
这是用于呈现自定义指令的代码。 hello 变量显示正确,但项目根本没有渲染。如果列表中有一项,则会显示该项目。
{{ task.hello }}
<div ng-repeat="item in task.items">
<div> {{ item }} </div>
</div>
渲染图像
相同的字符串打破循环
这似乎是不直观的行为。你自己尝试一下吧。我更改了示例中的一个字母,模板按预期呈现。
谁能告诉我为什么会这样?
Example的代码。此代码会产生不同的结果,并且由于某种原因不起作用,除非您添加“$scope”前缀而不是“this”,如 enter link description here 中所示。 。更令人困惑的是,范围版本实际上不会产生本文所描述的问题。
最佳答案
ngRepeat
期望 items
是不同的对象(通过 ===
进行比较)。
由于字符串是基元,因此 2 个相同的字符串被视为相等/相同。
您可以使用track by
来指示ngRepeat
比较其他内容,例如索引:
ng-repeat="item in task.items track by $index"
关于javascript - 简单 Ng-Repeat(不重复)场景指令 TemplateUrl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24034430/