Ractive.js 引用对象更改时视图不更新
Ractive.js view not updating when reference object changes
我的问题在 http://jsfiddle.net/shrekuntu/ek2m25cj/7/
中得到了最好的描述
//--ractive code in jsfiddle
我有一个 'workstations' 的列表,单击工作站会设置一个活动对象 'current_ws' 以进行编辑。如果我更改 'current_ws' 的名称,它不会显示在工作站列表中。我认为 'workstation' 对象在内存中更新,它只是没有反映列表中屏幕上的变化。我怎样才能让它更新?
谢谢
Ractive 需要的不仅仅是对象引用相等 "know" 值指的是同一事物。好的一面是,一旦你制作了 link,你就不需要 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
edge 中,您可以使用 link 方法来利用单独的对象引用(参见 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}}
您可以启用 magic mode 使 ractive 使用 ES5 访问器来触发更新:
ractive = new Ractive({
magic: true,
// ...
};
查看工作 fiddle
我的问题在 http://jsfiddle.net/shrekuntu/ek2m25cj/7/
中得到了最好的描述//--ractive code in jsfiddle
我有一个 'workstations' 的列表,单击工作站会设置一个活动对象 'current_ws' 以进行编辑。如果我更改 'current_ws' 的名称,它不会显示在工作站列表中。我认为 'workstation' 对象在内存中更新,它只是没有反映列表中屏幕上的变化。我怎样才能让它更新?
谢谢
Ractive 需要的不仅仅是对象引用相等 "know" 值指的是同一事物。好的一面是,一旦你制作了 link,你就不需要 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
edge 中,您可以使用 link 方法来利用单独的对象引用(参见 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}}
您可以启用 magic mode 使 ractive 使用 ES5 访问器来触发更新:
ractive = new Ractive({
magic: true,
// ...
};
查看工作 fiddle