2017-06-18 25 views
0

私はこのselect持っていない場合:設定のデフォルト値は値

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

は私だけ$root.selectedUser = 0がそうでなければ、私は、デフォルト値を必要としない場合は、デフォルト値(「セレクト1」)を選択する必要があります。

私はそれを試してみました:

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

をしかし、それは働いていません。 ($root.selectedUser = 0の場合、デフォルト値の代わりにリストの最初の値が表示されます)

これを達成する方法はありますか?こののModelViewもし

+1

エラーは再現できません:http://jsfiddle.net/ogLpxc0L/1/。あなたはフィドルを更新できますか? –

+0

@JoseLuisありがとうございました、問題の原因がわかりました。 'selectedUser'は' 0'値を得ることができません。 '0'値を設定すると' undefined'が得られます。 'selectedUser'を' 0 'にできないのはなぜですか?私はfiddleに 'console.log()を追加しました。 – user3378165

+0

フィディ(http://jsfiddle.net/ogLpxc0L/4/)のこのアップデートでは、 '0'を選択することができます。選択した実際の値を表示するために 'Selected'という行を追加しました。また、最初のユーザーをid = 0に変更しました。このリンク(http://knockoutjs.com/documentation/options-binding.html)では、 'undefined'値がデフォルトオプションを示しています。 –

答えて

1

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 0

を持っているユーザーを持っています。

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

あなたが任意の値、またはundefinedを保存する場合は、デフォルトのオプションが示されている:これのすべては一つの選択肢を選択します。

このfiddleは、この例を示しています。

+1

あなたの答えをありがとう! – user3378165

+0

喜んで助けてください! :-) –

関連する問題