モデルを持っている場合
function SearchModel() {
this.SearchCriteria = "";
}
そして私のコード内には:
model.SearchCriteria = data;
ko.applyBindings(model);
そして私のhtmlで:
<select id="vehiclesMake" data-bind="options: SearchCriteria.Tool.VehicleMakes, optionsText: 'Description', value: SearchCriteria.Tool.SelectedModel, optionsCaption: 'Choose...'"></select>
これらはすべて正常に機能します。ドロップダウンが期待どおりに表示されます。
今私が抱えている問題は、次を追加するときです。
$('#vehiclesMake').change(function () {
loadSearchTool();
});
loadSearchTool()が行う場所:
loadSearchTool = function () {
var postCode = $('#postcode').val();
var distance = $('#distance').val();
var make = $('#vehiclesMake').val();
var makemodel = $('#makemodel').val();
var minPrice = $('#minPrice').val();
var maxPrice = $('#maxPrice').val();
data.getQuickSearch(postCode, distance, make, makemodel, minPrice, maxPrice, function (data) {
//our success function
console.log(data.Result);
if (data.Result == 'Fail') {
console.log('Fail');//TO DO
}
else {
model.SearchCriteria = data;
ko.applyBindings(model);
}
}, function () {
console.log('error');//TO DO
});
};
上記のすべてのコードで、loadsearchtool(pageloadでも呼び出されます)がドロップダウンにバインドされると、.change()コードが実行され、無限ループに陥ります。
どうすればこれを回避できますか?これはknockoutjsでの私の最初のクラックなので、少し初心者です。