Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 余烬动态更新模板(数组项)_Javascript_Ember.js - Fatal编程技术网

Javascript 余烬动态更新模板(数组项)

Javascript 余烬动态更新模板(数组项),javascript,ember.js,Javascript,Ember.js,我使用的是Ember版本2,我的组件模板如下 {{#each info as |item|}} <span class="value">{{item.value}}</span> <span class="label">{{t item.label}}</span> {{/each}} 这是行不通的 var info = self.get('gridParas.info'); info.label = "MyTotalField"

我使用的是Ember版本2,我的组件模板如下

{{#each info as |item|}}
    <span class="value">{{item.value}}</span>
    <span class="label">{{t item.label}}</span>
{{/each}}
这是行不通的

var info = self.get('gridParas.info');
info.label = "MyTotalField";
info.value = total;
self.set('gridParas.info', info);
popObject()和pushObject()的方式正确吗?第二种方法有什么问题? 我希望避免每次都按pop键。

set()方法通知模型某个属性已更改,从而触发模板更新。更新标签和值后,您可以调用
notifyPropertyChange('info')
notifyPropertyChange('info.label')
,而不是使用它,这将更新模板。更多信息可在以下文档中找到:


您可以直接在最后一个元素上设置属性,而无需弹出和按下:

var info = self.get('gridParas.info');
info.getObjectAt(info.get('length') - 1).setProperties({
  label: 'MyTotalField',
  value: total
});
或者,如果不想重复使用当前的最后一项,请使用
replace

info.replace(info.get('length') - 1, 1, [{
  label: 'MyTotalField',
  value: total
}]);
如您所见,您需要传递
replace
索引、要替换的项的计数,以及要粘贴在其中的新项的数组

在任何情况下,您都不需要:

self.set('gridParas.info', info);

因为这已经是
gridParas.info
的值了。

你可以做
self.set('gridParas.info.label',“MyTotalField”)
self.set('gridParas.info.value',total)
。不确定这是否有效,因为“info”实际上是一个数组只是尝试了一下……虽然它似乎在更新标签/值,但它并没有反映在用户界面上(与执行push/pushObject时一样)如果info是数组,则它应该是
info[0]。标签
info[0]。值
假设info只有一个元素。这不起作用…给出未捕获的错误:属性集失败:路径“gridParas.info[0]中的对象”找不到或已被销毁。了解
notifyPropertyChange
很有用,但只有在特殊情况下才需要它。这会有什么帮助?另外,
info
是一个数组。
label
属性位于数组的元素上,而不是我所理解的数组本身。也没有引用
info.label
所以我怀疑它上面的
notifyPropertyChanges
是否有任何作用。
self.set('gridParas.info', info);