由于某些原因我无法使用foreach绑定来处理其中的$ data对象,我已在JSfiddle上发布了代码
对我来说奇怪的是
<div data-bind="template: { name: 'input-template', foreach: $root.geometries['Kubus'].invoer }"></div>
有效,$ data是'Kubus'
但那
<div data-bind="template: { name: 'input-template', foreach: $root.geometries[$data].invoer }"></div>
给出了一条javascript错误消息:
无法解析绑定。消息:TypeError:$ root.geometries [$ data] 未定义;绑定值:template:{name:'input-template', foreach:$ root.geometries [$ data] .invoer}
答案 0 :(得分:1)
对我而言,你对with: dimSelect
和with: geoSelect
过于棘手。为什么不直接使用dimSelect()
和geoSelect()
?
答案 1 :(得分:0)
如果您使用$ data,它是一个对象,但不是像'Kubus'这样的字符串。
您应该将“name”之类的新字段添加到“geometry”中,并添加方法“getGeometryByName”,您将执行以下操作:
self.getGeometryByName = function (geometryName) {
var result= null;
$.each(self.geometries(), function (index, value) {
if (value.name() == geometryName) {
result= value;
return false;
}
});
return result;
}
当您直接按名称使用模型字段而不是使用:+ $ data (来自自己的开发经验)时,更容易理解视图代码