我在数组中有一个对象
var
sidelist = [
{
name:"MURICA",
types:[...]
}
];
我有一个显示对象名称的框。然后我有一个文本字段和一个按钮。按下按钮时,对象的名称被设置为文本字段值。但我不知道如何使框中的名称相应更改。
据我了解,将对象放在会话变量中不是一种选择,因为如果不重置整个会话变量,我将无法修改其中对象的属性。我试过了,但失败了。
我在数组中有一个对象
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);
[编辑] 将上述行放在代码的仅客户端部分中。
注意空参数。这将为您提供一个仅存储在客户端上并且是常规 Meteor 反应源的集合。然后,您可以像使用普通集合一样在代码和 html 中使用它。
希望有帮助。