我有一个与 Knockout.js 库相关的基本问题。
到目前为止,我正在创建一些类型为数字和范围的输入字段。
<input type="range" min="0.0" max="1.0" step="0.001" data-bind="value: example1" ></input>
<input type="number" min="0.0" max="1.0" step="0.001" data-bind="value: example1"></input>
<input type="range" min="0.5" max="2.5" step="0.001" data-bind="value: example2" ></input>
<input type="number" min="0.5" max="2.5" step="0.001" data-bind="value: example2"></input>
当激活knockout.js时,我只是做类似的事情
this.example1 = ko.observable("0.000");
this.example2 = ko.observable("0.000");
<小时/>
我的问题是网站收到随机数量的这些输入参数。对于某些项目,只有 2 个(如我的示例中所示),而其他项目则采用 8 个参数。
如何在 knockout 中指定这些可观察量的动态数量?
谢谢!
<小时/>编辑:
已解决。
继续所选答案的解决方案:
通过“attr”绑定(bind),我能够为每个输入设置不同的属性值。
<input type="number" step="0.001" data-bind="value: value, attr: {id: name, min: minValue, max: maxValue}"></input>
最佳答案
只需使用可观察值的可观察数组。创建一个可观察数组,并为服务器返回的每个结果 .push() 创建一个新的可观察对象或将可观察对象放入可观察数组中的对象。
然后在 Dom 中使用 for every 绑定(bind)来迭代它们并显示每个绑定(bind)。
在虚拟机中 -
var objectsArray = ko.observableArray();
// results from AJAX or w/e
ko.utils.arrayForEach(results, function (result) {
objectsArray.push(new ObjectType(result));
});
function ObjectType (data) {
var self = this;
self.SomeProperty = ko.observable(data);
}
然后在 View 中
<div data-bind="foreach: objectsArray">
<input data-bind="value: SomeProperty " />
</div>
jsFiddle 示例 -
关于javascript - 使用 knockout.js 动态观察量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26383138/