如果我有我的模型
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 的第一次破解,所以对它有点新手。