当引用对象更改时,Ractive.js视图不会更新

时间:2015-10-05 19:17:29

标签: javascript javascript-objects ractivejs

我的问题最好在http://jsfiddle.net/shrekuntu/ek2m25cj/7/

中说明
$(".test1  a");//match any `a` that is descendant of class `test1`

我有一个'工作站列表'并点击工作站设置一个ractive对象' current_ws'用于编辑。如果我更改了' current_ws'它不会在工作站列表中显示它。我认为'工作站'对象在内存中更新,它只是不反映列表中屏幕上的更改。我怎样才能让它更新?

谢谢

2 个答案:

答案 0 :(得分:1)

Ractive需要的不仅仅是对象引用相等,以“知道”这些值引用相同的东西。好处是,一旦你建立链接,你不需要一个JavaScript来连接它们。

使用0.7(最新),使用键路径和当前索引而不是对象引用(请参阅http://jsfiddle.net/ek2m25cj/8/):

{{#workstations:i}}
    <li on-click='set( "current", i )'>{{name}} ({{departments[department_id].name}})</li>
{{/workstations}}
</ul>
{{#if current != null}}
<div>
    Name:<input type="text" value="{{ workstations[current].name}}">
</div>
{{/if}} 

使用下一版本的Ractive 0.8边缘,您可以使用链接方法来使用单独的对象引用(请参阅github PR):

{{#workstations:i}}
    <li on-click='link( "current", this )'>{{name}} ({{departments[department_id].name}})</li>
{{/workstations}}
</ul>
{{#if current}}
<div>
    Name:<input type="text" value="{{ current.name }}">
</div>
{{/if}}

答案 1 :(得分:0)

您可以启用magic mode以使用ES5访问器来触发更新:

ractive = new Ractive({
            magic: true,
            // ...
          };

见工作fiddle