如何从配置文件中读取数据绑定属性值并将i绑定到视图

时间:2017-02-06 12:06:21

标签: javascript knockout.js bind knockout-2.0 knockout-3.0

在淘汰赛中,我需要从属性和值绑定配置文件并将其绑定到视图。我怎样才能做到这一点?

e.g。

<tbody data-bind="foreach: {data: data, as : 'tbData'}">
  <!-- ko foreach: $parent.bindingProperties -->
    <input type="text" data-bind="value:tbData.spec"/>
  <!-- /ko -->
//some code
</tbody>

我需要阅读&#34;值:tbData.spec&#34;来自js文件。如何通过调用它来编写合适的JS函数并将其绑定到视图?

配置文件是js文件。配置文件就像

bindingProperties : [{'value': 'tbData.spec'}]

1 个答案:

答案 0 :(得分:0)

我不确定你当前是如何加载配置文件的,但是如果你可以将其内容转储到一个observable中,那么你可以将它绑定到UI。我做了一个快速绑定,它将通过名称 - 值对手动应用其他绑定。这不是我之前使用的东西,所以它没有经过良好的测试,而且它肯定不仅仅是一个概念验证的强大功能。

ko.bindingHandlers.applyBindings = {
    update: function(element, valueAccessor, allBindingsAccessor, data, bindingContext) {
        var bindings = ko.unwrap(valueAccessor()) || {}; //should be an object with multiple properties like: { bindingName: propertyName }
        for (var name in bindings) {
            if (bindings.hasOwnProperty(name)) {
                var binding = {};
                var target = data[bindings[name]];
                binding[name] = function () { return target; };

                ko.applyBindingAccessorsToNode(element, binding, bindingContext);
            }
        }
    }
}

这里有一个实际的jsFiddle:fiddle