[英]How to make a DOM element update after an object it depends on changes in meteor?
我在数组中有一个对象
var
sidelist = [
{
name:"MURICA",
types:[...]
}
];
我有一个显示对象名称的框。 然后,我有一个文本字段和一个按钮。 按下按钮时,对象的名称将设置为文本字段值。 但是我不知道如何在框中更改名称。
据我了解,将对象放在会话变量中不是一种选择,因为在不重置整个会话变量的情况下,我将无法修改其中的对象的属性。 我尝试过但失败了。
html
<template name="asdf">
{{#with object}}
<div>{{name}}</div>
{{/with}}
</template>
js
Template.asdf.object = function() {
return Objects.findOne(...);
};
编辑
我想你的问题错了,对不起。 如果您要更改内存中的值并更新DOM,请使用依赖项:
html
<template name="asdf">
{{property}}
</template>
js
var property;
// Create new dependency object that will manage refreshing property value:
var _dep = new Deps.Dependency;
updateProperty = function(value) {
property = value;
// Whenever you change value of the property, call changed() function:
_dep.changed();
};
Template.asdf.value = function() {
// Within reactive function, call depend() to rerun the function
// each time the value is changed:
_dep.depend();
return value;
};
在我看来,一个不同且更简单的解决方案是如何-使用本地数据集。
我不确定究竟为什么将这种数据保存到数组中,但是如果是因为仅在客户端上需要它,则可以创建一个本地集合并具有所有的响应性好处,而无需编写所有用于阵列反应性。 存储在本地集合中的数据永远不会发送到服务器,因此不会产生通信或存储开销。
您可以这样:
Sidelist = new Meteor.Collection(null);
[编辑]将以上行放入代码的仅客户端部分。
注意null参数。 这将为您提供一个仅存储在客户端上的集合,它是常规的Meteor反应源。 然后,就像在普通集合中一样,在代码和html中继续使用它。
希望能有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.