如果没有值,则设置select的默认值

时间:2017-06-18 11:06:50

标签: javascript knockout.js

我有select

<select data-bind="options: $root.users(), optionsText: 'name', optionsValue: 'id', value: $root.selectedUser, optionsCaption: 'Select one'"></select>

我只需要$root.selectedUser = 0选择默认值(&#39;选择一个&#39;),否则我不需要默认值。

我试过了:

<select data-bind="options: $root.users(), optionsText: 'name', optionsValue: 'id', value: $root.selectedUser, optionsCaption: $root.selectedUser () === 0 ? 'Select one' : ''"></select>

但它没有用。 (如果$root.selectedUser = 0它显示列表的第一个值而不是默认值。)

关于如何实现这一点的任何想法?

1 个答案:

答案 0 :(得分:1)

如果这个ModelView:

    var User = function(id, name) {
        this.name = name;
        this.id = id;
    };

    var viewModel = {
        users : ko.observableArray([
            new User(0,"User 1"),
            new User(2,"User 2"),
            new User(3,"User 3")
        ]),
        selectedUser : ko.observable(0)
    };


    ko.applyBindings(viewModel);

我的用户ID为Id。

如果您在observable中保存任何Id值,它会选择此选项。所有这些都将选择一个选项:

 selectedUser : ko.observable(0)
 selectedUser : ko.observable(2)
 selectedUser : ko.observable(3)

如果您保存任何值,或undefined,则会显示默认选项。

fiddle显示了此示例。