REF: http://jsfiddle.net/ffmqd0zz/
HTML:
<div id='books_container'/>
<script type='ractive/template' id="books">
{{#books}}
<div decorator='decoration' id="{{id}}">
<span> title: {{ title }}</span>
<span> id: {{ id }}</span>
</div>
{{/books}}
</script>
JavaScript的:
var MyDecorator = function(node) {
console.log("init MyDecorator for id: " + $(node).attr('id'));
return { teardown: function() {}};
};
var books = new Ractive({
el: '#books_container',
template: '#books',
data: {books: [{"id": 1174,"title": "franny and zoey"},
{"id": 1175,"title": "moby duck"}]},
decorators: { decoration: MyDecorator }
});
console.log("init complete")
books.set('books', [{"id": 1176,"title": "life, the universe and stuff"},
{"id": 1177,"title": "yellowbrick road"},
{"id": 1178,"title": "grapes of wrath"} ]);
注意装饰初始化登录到控制台。
当Ractive被初始化,在“书籍”列表中的两个初始项正确装饰,通过的console.log消息所示。 然而,当列表与改变“books.set()”,Ractive只有装饰名单上的第三个项目,以及书籍ID 1176和1177都没有初始化的装饰。
这似乎是由刚刚初始化第三,补充说,项目的装饰,跳过前两个,即使他们已经被替换优化性能。
难道我做错了,或者这是一个错误? 而且可以有人提出一个解决办法,请。
提前致谢