当我追加到数组时,Ractive.js会追加或重新生成all吗
Will Ractive.js append or rebuild all when I append to array?
模板
<script id='template' type='text/ractive'>
<p>Hello, {{name}}!</p>
{{#each items:num}}
<li>#{{num}} {{items[num]}}</li>
{{/each}}
</script>
JS-
<script>
window.r = new Ractive({
// The `el` option can be a node, an ID, or a CSS selector.
el: '.reactivejs',
// We could pass in a string, but for the sake of convenience
// we're passing the ID of the <script> tag above.
template: '#template',
// Here, we're passing in some initial data
data: {name: 'world',items:["Food","Tools","Human"]}
});
</script>
如果我像这样附加到数组:
r.get("items").push("Somthing")
ractivejs如何渲染附加的元素?重建全部还是只添加一个新的dom元素?这一点很重要,因为此数组可能包含数千个元素。全部重建非常缓慢,并且此数组将快速更新。
它将附加节点。可以通过标记节点(请参见http://jsfiddle.net/4j6xzbwv/):
var length = 10;
var arr = new Array(length);
while(length--){
arr[length] = 'item' + length;
}
var r = new Ractive({
el: document.body,
template: '#template',
data: {
list: arr
}
})
var tags = document.querySelectorAll('p');
length = tags.length;
while(length--){
tags[length].setAttribute('data-tagged', true);
}
r.push('list', 34);
console.log(document.querySelectorAll('p[data-tagged=true]').length, r.get('list.length'));
它也适用于拼接(http://jsfiddle.net/4j6xzbwv/1/)以及用于类似混洗操作的结账CCD_ 1。
如果设置了一个新数组,Racive在重用DOM节点方面也很聪明。您可以在中看到http://jsfiddle.net/4j6xzbwv/2/DOM节点如何被新数组重用,因为只有文本节点内容需要更新
相关文章:
- 表追加而不附加最后一个元素
- 如何在jquery中停止在更改时追加值
- JQuery.on(“keydown”)追加到页面时不工作
- jQuery[button.class]未检测到用按钮追加行
- 使用jQuery'生成输入字段;s追加
- js”;在“;不按特定顺序追加键/值
- 如何在 ReactJs 中追加到表
- 文本框仅接受十进制值,并且应在十进制后追加2个零
- 为什么DocumentFragment在追加后被清除
- 正在从JQuery追加Laravel Blade
- 有什么方法可以在下一个元素上进行追加吗
- jQuery-根据值在输入字段后追加图像
- jQuery动态使用.append()添加输入,但发布表单不是追加数据
- 追加Jquery后的Binding Click事件不起作用
- 包含数组的对象的QML ListModel追加中断
- JQuery追加到父级,只要它's已创建
- 一个接一个地追加两次
- 如何仅在数组没有的情况下追加到数组't包含带有rethinkDB的值
- Jasmine-无法将元素追加到DOM
- 重置transform:rotate(),方法是移除并追加在追加和重绘图表后未显示数据的画布