0

我在数组中有一个对象

var 
sidelist = [
    {
    name:"MURICA", 
    types:[...]
    }
];

我有一个显示对象名称的框。然后我有一个文本字段和一个按钮。按下按钮时,对象的名称被设置为文本字段值。但我不知道如何使框中的名称相应更改。

据我了解,将对象放在会话变量中不是一种选择,因为如果不重置整个会话变量,我将无法修改其中对象的属性。我试过了,但失败了。

4

2 回答 2

3

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;
};
于 2013-07-15T08:49:03.410 回答
0

一个不同的、在我看来更简单的解决方案怎么样 - 为您的数据使用本地集合。

我不确定你为什么要将这类数据保存到一个数组中,但如果是因为你只需要在客户端上使用它,那么你可以创建一个本地集合并获得所有反应性优势,而无需编写所有代码来制作数组反应。存储在本地集合中的数据永远不会发送到服务器,因此没有通信或存储开销。

你会这样做:

Sidelist = new Meteor.Collection(null);

[编辑] 将上述行放在代码的仅客户端部分中。

注意空参数。这将为您提供一个仅存储在客户端上并且是常规 Meteor 反应源的集合。然后,您可以像使用普通集合一样在代码和 html 中使用它。

希望有帮助。

于 2013-07-17T15:44:14.437 回答