Javascript 淘汰赛:实施;聚焦;在列表中的对象上
在我的根视图模型中,我有可观察的Javascript 淘汰赛:实施;聚焦;在列表中的对象上,javascript,knockout.js,Javascript,Knockout.js,在我的根视图模型中,我有可观察的对象数组 我希望有一个下拉列表,允许用户选择该列表的元素(我们称之为current),然后能够将所选对象的一些属性绑定到某个编辑框 因此,对于用户来说,这应该看起来像他/她可以“聚焦”某个特定对象(使用组合框),然后编辑其属性 现在在我的html中,我有如下内容: <select data-bind="options: objects, optionsText: 'property', value: current, optionsCaption: 'Cho
对象数组
我希望有一个下拉列表,允许用户选择该列表的元素(我们称之为current
),然后能够将所选对象的一些属性
绑定到某个编辑框
因此,对于用户来说,这应该看起来像他/她可以“聚焦”某个特定对象(使用组合框),然后编辑其属性
现在在我的html中,我有如下内容:
<select data-bind="options: objects, optionsText: 'property', value: current, optionsCaption: 'Choose...'"></select>
function ObjectViewModel(p) {
var self = this;
self.property = ko.observable(p);
}
function AppViewModel() {
var self = this;
self.objects = ko.observableArray([
new ObjectViewModel("id1"),
new ObjectViewModel("id2")
]);
self.current = ko.observable();
}
ko.applyBindings(new AppViewModel());
但是,当我在下拉列表中选择值时,什么都不会发生
我怀疑我没有正确管理AppViewModel
的current
属性
在淘汰中实现这一点的正确方法是什么?您的代码有两个问题:
函数ObjectViewModel(p){
var self=这个;
自身属性=可观察的ko(p);
}
函数AppViewModel(){
var self=这个;
self.objects=ko.observearray([
新的ObjectViewModel(“id1”),
新的ObjectViewModel(“id2”)
]);
自电流=可观察的ko();
}
应用绑定(新的AppViewModel())代码>
您的代码有两个问题:
电流是可观察的,所以要评估值,必须使用“()”
除非设置了current,否则无法访问“current().property”。因此,为了避免失败,请进行检查。
希望这会有所帮助
函数ObjectViewModel(p){
var self=这个;
自身属性=可观察的ko(p);
}
函数AppViewModel(){
var self=这个;
self.objects=ko.observearray([
新的ObjectViewModel(“id1”),
新的ObjectViewModel(“id2”)
]);
自电流=可观察的ko();
}
应用绑定(新的AppViewModel())代码>
为了改进Amit Bhoyar的答案(我认为这是一件好事),我建议您将与绑定,而不是if绑定,这样您就不必担心调用current().property来绑定值,使用绑定创建当前所选项目的正确上下文,并确保其中的html块仅使用当前可观察的true-y值进行渲染。我还将值绑定更改为文本输入绑定,以获得对文本输入更改的更好的应用程序响应
函数ObjectViewModel(p){
var self=这个;
自身属性=可观察的ko(p);
}
函数AppViewModel(){
var self=这个;
self.objects=ko.observearray([
新的ObjectViewModel(“id1”),
新的ObjectViewModel(“id2”)
]);
自电流=可观察的ko();
}
应用绑定(新的AppViewModel())代码>
为了改进Amit Bhoyar的答案(我认为这是一件好事),我建议您将与绑定,而不是if绑定,这样您就不必担心调用current().property来绑定值,使用绑定创建当前所选项目的正确上下文,并确保其中的html块仅使用当前可观察的true-y值进行渲染。我还将值绑定更改为文本输入绑定,以获得对文本输入更改的更好的应用程序响应
函数ObjectViewModel(p){
var self=这个;
自身属性=可观察的ko(p);
}
函数AppViewModel(){
var self=这个;
self.objects=ko.observearray([
新的ObjectViewModel(“id1”),
新的ObjectViewModel(“id2”)
]);
自电流=可观察的ko();
}
应用绑定(新的AppViewModel())代码>
function ObjectViewModel(p) {
var self = this;
self.property = ko.observable(p);
}
function AppViewModel() {
var self = this;
self.objects = ko.observableArray([
new ObjectViewModel("id1"),
new ObjectViewModel("id2")
]);
self.current = ko.observable();
}
ko.applyBindings(new AppViewModel());