如何使用的foreach与$数据对象绑定(knockout.js)(How to use forea

2019-09-17 13:52发布

由于某种原因,我不能让一个foreach结合在它$数据对象的工作,我已经发布的代码的jsfiddle

对我来说,奇怪的是,

<div data-bind="template: { name: 'input-template', foreach: $root.geometries['Kubus'].invoer }"></div> 

工作,而$的数据是“库布斯”

<div data-bind="template: { name: 'input-template', foreach: $root.geometries[$data].invoer }"></div> 

给出一个JavaScript错误消息:

无法解析绑定。 消息:类型错误:$ root.geometries [$数据]是未定义的; 绑定值:模板:{名称: '输入模板',的foreach:$ root.geometries [$数据] .invoer}

  1. 你能解释一下为什么出现这种情况?
  2. 你能告诉我,我应该怎么做,所以误差不显示?
  3. 是否有办法做什么,我想用更高效的代码呢?

Answer 1:

对我来说,你正在与太棘手with: dimSelectwith: geoSelect 。 为什么不直接使用dimSelect()geoSelect()直接?

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



Answer 2:

在您使用$数据情况下,它是一个对象,而不是像“库布斯”的字符串。

你应该像“名”添加新的领域,以“几何”相加法“getGeometryByName”,在那里你会做这样的事情:

 self.getGeometryByName = function (geometryName) {
        var result= null;
        $.each(self.geometries(), function (index, value) {
            if (value.name() == geometryName) {
                result= value;
                return false;
            }
        });

        return result;
    }

也更容易,当你直接名称,而不是使用示范田,了解视图代码:+ $数据 (来自自身的开发经验)



文章来源: How to use foreach binding (knockout.js) with the $data object