ノックアウト js と選択したプラグイン (https://github.com/harvesthq/chosen) を使用して、見栄えの良い複数選択を試みています。
さまざまな方法を試しましたが、使用しているデータで複数選択が機能しません。複数選択をクリックすると、オプション バインディングに正しいデータが含まれていても、値が表示されません。
HTML:
<select multiple="multiple" data-bind="options: allCustomers,
selectedOptions: event().customers, optionsText: 'name',
optionsValue: 'id', chosen: true " ></select>
ビュー モデルの簡略化されたバージョン:
function Event()
{
this.customers = ko.observableArray();
};
//for chosen plugin
ko.bindingHandlers.chosen = {
update: function(element, valueAccessor, allBindingsAccessor, viewModel) {
$(element).chosen();
}
}
function ViewModel()
{
this.event = ko.observable(new Event());
this.allCustomers = ko.observableArray();
};
var viewModel = new ViewModel();
$.getJSON("/get_json", function(data)
{
for (var c = 0; c < data.customers.length; c++)
{
viewModel.allCustomers.push(data.customers[c]);
}
});
ko.applyBindings(viewModel);
PHP:
function get_json()
{
$eventData = array(
'customers' => array(array('name' => 'Bob', 'id' => 1), array('name' => 'John', 'id' => 2)),
'moreData' => array(),
'evenMoreData' => array()
);
echo json_encode($eventData);
}
これは選択されたスタイルの選択ボックスを示していますが、それをクリックしてもオプションは表示されません。
顧客のビュー モデルでローカル JS 配列を作成し、それを allCustomers に渡すと、複数選択が正しく機能するため (私のjsfiddleを参照)、サーバーからデータを取得することと関係がありますが、私はこれを見つめてきました問題が見えない間!
どんな助けでも大歓迎です