Javascript KnockoutJS:无法更新选项值
我正在制作一个由JQuery项和淘汰项组成的网页 基本上,该视图有一个选择字段和一个sevond视图,该视图正在通过选择值更改进行更新 我还有一个带有jquery自动完成的文本框搜索字段 我想做的是,当我在搜索框上按enter键后,javascript将更新ko.observable值并触发ther更新,但它不起作用。我已成功触发按键,但我无法更新并触发更新 代码如下:Javascript KnockoutJS:无法更新选项值,javascript,knockout.js,Javascript,Knockout.js,我正在制作一个由JQuery项和淘汰项组成的网页 基本上,该视图有一个选择字段和一个sevond视图,该视图正在通过选择值更改进行更新 我还有一个带有jquery自动完成的文本框搜索字段 我想做的是,当我在搜索框上按enter键后,javascript将更新ko.observable值并触发ther更新,但它不起作用。我已成功触发按键,但我无法更新并触发更新 代码如下: function Station(data){ var self = this;
function Station(data){
var self = this;
this.userId = ko.observable(data.userid);
this.displayName = ko.observable(data.displayName);
this.email = ko.observable(data.email);
this.redirectURL = ko.computed(function(){
return "/someurl/somerequest?userId="+self.userId();
});
this.selectText = ko.computed(function(){
return self.displayName();
})
}
function currentStation(index)
{
return self.stations()[index];
}
function StationViewModel(){
var self = this;
self.stations = ko.observableArray([]);
$("#stationSelect").attr("disabled,true");
$.getJSON("@{someurl.getStationList()}",function(allData){
var mappedStations = $.map(allData,function(item)
{
return new Station(item);
});
self.stations(mappedStations);
$("#stationSelect").attr("disabled,false");
});
url = "/someurl/somerequest?userId=";
this.selectedStation = ko.observable();
this.redirectToStation = function(){
var linkToSend =
alert(self.selectedStation.redirectURL());
}
<!-- THIS IS THE CODE THAT HAS TO UPDATE THE FIELD BUT IT DOESN'T-->
this.getStation = function(event)
{
for(i = 0; i<this.stations().length;i++)
{
if(this.stations()[i].userId()==$("#search").val())
{
self.selectedStation = ko.observable(this.stations()[i]); //Am i doing it right?
}
}
};
}
<!-- This is the code That handles the click event inside the textbox. its working -->
ko.bindingHandlers.executeOnEnter = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel) {
var allBindings = allBindingsAccessor();
$(element).keypress(function (event) {
var keyCode = (event.which ? event.which : event.keyCode);
if (keyCode === 13) {
allBindings.executeOnEnter.call(viewModel);
return false;
}
return true;
});
}
};
ko.applyBindings(new StationViewModel());
</script>
而不是
self.selectedStation=ko.observablethis.stations[i]
做
自行选择的站点该站点[i]
希望这有帮助 我过去为使Enter键工作所做的是将 所以从
<input type="text" data-bind="value:myValue"></input>
到
您是否介意将其与您正在使用的标记一起放入JSFIDLE中。抱歉,我无法将代码放入JSFIDLE中。。看起来他们的选择中没有knockoutjs……您可以在参考资料部分添加KO。你可以用叉子叉这个,它可以用了!谢谢你的回答!对于迟到的回复,我感到抱歉:我的问题不是进入事件,而是观察者没有注意到。现在开始工作了,谢谢你的帮助。
<form>
<input type="text" data-bind="value:myValue"></input>
</form>