嗨,我正在尝试使用observableArray做foreach,但没有任何结果。
在调试文件时,如javascript文件中的数据将随数组加载。 html代码如下:
<!-- ko foreach: currencyarr -->
<option data-bind="value:id, text:label"></option>
<!-- /ko -->
JSON文件内容如下:
"name" : "shuvagho",
"curarr" : [
{"id": "inr", "label": "INR"},
{"id": "usd", "label": "USD"},
{"id": "aud", "label": "AUD"},
{"id": "sgd", "label": "SGD"}
]
使用淘汰赛js的javascript代码如下:
self.currencyarr = ko.observableArray();
self.currencyarr(data.curarr);
最佳答案
您忘记在foreach中使用$ data了。
var ViewModel = function(){
var self = this;
self.currencyarr = ko.observableArray();
self.currencyarr(data.curarr);
}
var data = {
"name" : "shuvagho",
"curarr" : [
{"id": "inr", "label": "INR"},
{"id": "usd", "label": "USD"},
{"id": "aud", "label": "AUD"},
{"id": "sgd", "label": "SGD"}
]};
var viewModel = new ViewModel();
ko.applyBindings(viewModel);
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<select>
<!--ko foreach: currencyarr-->
<option data-bind="text:$data.label, value:$data.id" ></option>
<!--/ko-->
</select>
您还可以将选择标签中的选项绑定在一起。
var ViewModel = function(){
var self = this;
self.currencyarr = ko.observableArray();
self.currencyarr(data.curarr);
}
var data = {
"name" : "shuvagho",
"curarr" : [
{"id": "inr", "label": "INR"},
{"id": "usd", "label": "USD"},
{"id": "aud", "label": "AUD"},
{"id": "sgd", "label": "SGD"}
]};
var viewModel = new ViewModel();
ko.applyBindings(viewModel);
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<select data-bind="options:$root.currencyarr, optionsText: 'label',optionsValue:'id'"></select>
关于javascript - knockout js observableArray无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36885544/