【发布时间】:2013-12-16 13:52:39
【问题描述】:
我有非常嵌套的数据,所以我添加了一个{{scope variable}}...{{/scope}} 标签,它只是改变了范围:
scope: function (newScope) {
return this.tagCtx.render(newScope);
}
到目前为止,此方法有效,但此示例代码在 onAfterChange 中存在问题,我使用它来将数据推送回服务器。
在初始化器中:
data.Foo.Bar.TheObject = new MyObject('Foo'); // has "Name" property set to "Foo"
在模板中:
{{scope Foo.Bar.TheObject}}
<input type="text" data-link="Name" />
{{/scope}}
它将正确显示“Foo”,但是当我更改它时,在onAfterChange 中我得到data 对象而不是TheObject。我可以向{{scope}} 添加一些内容以实现onAfterChange 的范围更改吗?
({{for}} 标签有这种行为,但我不能循环遍历单个对象。)
【问题讨论】:
-
您说:“{{for}} 标签有这种行为,但我不能遍历单个对象”。但它不一定是一个数组。你可以做{{for some.object}}...见jsviews.com/#fortag“为给定的对象渲染指定的模板,或者遍历给定的数组”
-
对不起,我显然误解了
{{for}}标签,谢谢你的澄清。但为了完整起见:是否可以更改标签的作用域行为? -
我会尽快在文档中介绍这种情况。如果您愿意,您能否在 JsViews GitHub 项目上创建一个与此相关的问题,并包括上面的完整示例,或者一个 jsfiddle 说明您认为现在没有按预期工作的内容?谢谢
-
所以我花了很长时间弄清楚 this fiddle 现在我不确定 jsViews 是否真的做错了。第一种方法(基于
event.type === "change")只触发一次,但在使用this.data时需要我所说的Scoping。如果使用event.currentTarget,"propertyChange"不需要作用域 - 但它会触发两次。应该首选哪种方法?还是我误解了有关如何以及在何处调用 Save-To-Server 方法的部分内容? -
在提交 50 中所做的更改现在允许您使用 .observeAll 获取有关更改的完整信息。 onAfterChange 监听的是视图的变化,而不是数据的变化,所以一个数据变化肯定会导致不止一个 onAfterChange,这取决于有多少视图绑定到相同的数据。你有 "{^{:Foo.Bar.Name}}" 和 - 因此有两个事件。见jsviews.com/#observeAll。
标签: javascript jsviews