如何将可观察数组的默认值绑定到下拉列表?

时间:2015-04-21 15:35:30

标签: javascript json knockout.js

我有一个下拉列表,数据绑定到它,如下所示

HTML:

 <div>
                        <label>Notice Type</label>
                        <select id="ntctype" data-bind="options: NoticeType, value: selectedNoticeType, optionsCaption:'Choose...', optionsValue:'NoticeTypeID', optionsText:'NoticeTypeDescription'"></select>
                    </div>

KO JS:

  self.NoticeType = ko.observableArray([]);
    self.selectedNoticeType = ko.observable();
        $.getJSON("GetNoticeType", null, function (data) {
        self.NoticeType(data);
            }
    );

NoticeType数组如下所示 [{ “NoticeTypeID”:1, “NoticeTypeDescription”: “关闭”},{ “NoticeTypeID”:2 “NoticeTypeDescription”: “打开”}]

我想在绑定后将deafult值设置为关闭。我尝试使用optionsAfterRender&amp; ko.applybindingstoNode他们都没有工作。

这样做干净利落的方法是什么?

1 个答案:

答案 0 :(得分:0)

正如评论中所提到的,你只需要在viewModel中将默认值设置为value binded observable

查看型号:

function accountViewModel() {
    var self = this;
    self.NoticeType = ko.observableArray();
    self.selectedNoticeType = ko.observable();
    self.ajaxcall = function () {
        self.NoticeType([{
            "NoticeTypeID": 1,
            "NoticeTypeDescription": "Close"
        }, {
            "NoticeTypeID": 2,
            "NoticeTypeDescription": "Open"
        }]);
        self.selectedNoticeType = ko.observable(1);
    }

    self.ajaxcall();
}

工作小提琴 here