javascript - 使用 knockout.js 动态观察量

标签 javascript html arrays dynamic knockout.js

我有一个与 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 示例 -

http://jsfiddle.net/zabpe3jm/

关于javascript - 使用 knockout.js 动态观察量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26383138/

相关文章:

arrays - 在 Swift 3 中从字典中的数组中检索随机项

javascript - 对 GraphQL 查询进行随机排序

html - 在 Contenteditable div 中更改插入符颜色

javascript - 具有多个过滤器的 jQuery 复选框

jquery - 如何更改 jquery.ui selectmenu 的字体或大小?

javascript - 将变量值从 C# 传递到 javascript

python - 删除数组中重复的列,保持顺序

javascript - jQuery 在 .append 上存储值

javascript - 类型错误 : Object #<Socket> has no method 'set'

javascript - 使用 Backbone.Marionette 从 JSON 动态生成站点导航