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

Javascript 如何将可观察数组中的默认值绑定到下拉列表?,javascript,json,knockout.js,Javascript,Json,Knockout.js,我有一个下拉列表和数据绑定到它如下 HTML: <div> <label>Notice Type</label> <select id="ntctype" data-bind="options: NoticeType, value: selectedNoticeType, optionsCaption:'Choose...', optionsValue:'N

我有一个下拉列表和数据绑定到它如下

HTML:

 <div>
                        <label>Notice Type</label>
                        <select id="ntctype" data-bind="options: NoticeType, value: selectedNoticeType, optionsCaption:'Choose...', optionsValue:'NoticeTypeID', optionsText:'NoticeTypeDescription'"></select>
                    </div>
  self.NoticeType = ko.observableArray([]);
    self.selectedNoticeType = ko.observable();
        $.getJSON("GetNoticeType", null, function (data) {
        self.NoticeType(data);
            }
    );
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();
}
NoticeType数组如下所示 [{“NoticeTypeID”:1,“NoticeTypeDescription”:“Close”},{“NoticeTypeID”:2,“NoticeTypeDescription”:“Open”}]

绑定后,我想将deafult值设置为Close。我尝试使用选项afterrender&ko.applybindingstoode,但没有一个有效


要做到这一点,干净整洁的方法是什么?

如评论中所述,您只需将默认值设置为viewModel中的绑定可观察值

查看模型:

 <div>
                        <label>Notice Type</label>
                        <select id="ntctype" data-bind="options: NoticeType, value: selectedNoticeType, optionsCaption:'Choose...', optionsValue:'NoticeTypeID', optionsText:'NoticeTypeDescription'"></select>
                    </div>
  self.NoticeType = ko.observableArray([]);
    self.selectedNoticeType = ko.observable();
        $.getJSON("GetNoticeType", null, function (data) {
        self.NoticeType(data);
            }
    );
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();
}

工作小提琴

您只需尝试一下self。selectedNoticeType(1)应该可以工作。在这里拉小提琴。Cheerri尝试了这一点,但没有工作,因为在我的getJSONwell之后加载了可观察数组,然后执行了getJSON。将数据分配给
self.NoticeType
后,执行
self.selectedNoticeType(1)
。它将在这里工作。这应该会对你有所帮助。是的,它确实有效,但不会在下拉列表中显示为默认值。我目前可以解决这个问题,但只是想知道为什么