1

由于某种原因,我无法让 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] 未定义;绑定值:模板:{名称:'input-template',foreach:$root.geometries[$data].invoer}

  1. 你能解释为什么会这样吗?
  2. 你能告诉我应该怎么做才能不显示错误吗?
  3. 有没有办法用更高效的代码来做我想做的事情?
4

2 回答 2

1

with: dimSelect对我来说,你对and太棘手了with: geoSelect。为什么不直接使用dimSelect()andgeoSelect()呢?

http://jsfiddle.net/jearles/PYbzF/12/

于 2012-05-29T09:37:18.443 回答
0

如果您使用 $data 它是一个对象,而不是像“Kubus”这样的字符串。

您应该将“name”之类的新字段添加到“geometries”并添加方法“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(来自自己的开发经验)

于 2012-05-29T08:44:57.713 回答