【发布时间】:2014-10-05 12:28:03
【问题描述】:
在我的 javascript 中;
var tenderStatusChoices = '@Html.Raw(Model.TenderStatusChoices)';
我得到以下数据;
var tenderStatusChoices = '
[{
"Disabled": false,
"Group": null,
"Selected": true,
"Text": "Open",
"Value": "Open"
}, {
"Disabled": false,
"Group": null,
"Selected": false,
"Text": "Successful",
"Value": "Successful"
}, {
"Disabled": false,
"Group": null,
"Selected": false,
"Text": "Unsuccessful",
"Value": "Unsuccessful"
}]';
我不能使用这个 JSon 来填充组合框,当我这样做时,我得到以下错误;
"初始化可观察数组时传递的参数必须是数组,或者为null,或者未定义。"
那么如何把这个Json字符串转成ko能理解的数组呢?
填充组合的代码如下;
<select id="TenderStatus" data-bind="
options: tenderStatusChoices,
optionsText: 'Text',
optionsValue: 'Value',
value: status">
</select>
var temp = '@Html.Raw(Model.TenderStatusChoices)';
var tenderStatusChoices = JSON.stringify(eval("(" + temp + ")"));
var Tender = function () {
this.tenderId = ko.observable("@Model.Tender.TenderId");
this.title = ko.observable("@Html.Raw(Model.Tender.Title)");
this.estimateNumber = ko.observable("@Model.Tender.EstimateNumber");
this.status = ko.observable("@Model.Tender.Status");
this.tenderStatusChoices = ko.observableArray(tenderStatusChoices);
};
ko.applyBindings(Tender);
【问题讨论】:
-
您是否尝试过使用敲除映射? knockoutjs.com/documentation/plugins-mapping.html
标签: asp.net-mvc json knockout.js