繁体   English   中英

如何根据流星的变化在对象后更新DOM元素?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM