Javascript observableArray如何使用选项绑定

Javascript observableArray如何使用选项绑定,javascript,knockout.js,Javascript,Knockout.js,刚开始从官方网站学习Knockoutjs,我正在粘贴练习步骤3中的代码 查看 <table> <thead><tr> <th>Passenger name</th><th>Meal</th><th>Surcharge</th><th></th> </tr></thead> <tbody data-bi

刚开始从官方网站学习Knockoutjs,我正在粘贴练习步骤3中的代码

查看

<table>
    <thead><tr>
        <th>Passenger name</th><th>Meal</th><th>Surcharge</th><th></th>
    </tr></thead>

 <tbody data-bind="foreach: seats">
    <tr>
   <td><input data-bind="value: name" /></td>
        <td><select data-bind="options: $root.availableMeals, value: meal, optionsText: 'mealName'"></select></td>
        <td data-bind="text: meal().price"></td>
    </tr>    
</tbody>
</table>

<button data-bind="click: addSeat">Reserve another seat</button>
我想知道
ko.observearray
如何与
options
绑定一起工作,当下拉列表值更改时,价格行如何更新

是因为seats数组是
可观察数组
,所以price属性在
UI
中保持同步吗

我甚至试着在chrome中调试,但当下拉值改变时,并没有函数get被点击


任何帮助都会很好。

在您的代码中,价格会得到更新,因为
SeatReservation.mean
是可观察的,因为它在html模板中绑定到

因此,当您使用
fine().price
时,您正在访问可观察的膳食中的对象,并访问price属性

这和写作一样:

<td data-bind="text:price"></td>

function SeatReservation(name, initialMeal){
this.price = ko.pureComputed(function(){
   return this.meal().price;
});
} 

函数SeatServation(名称,初始值){
this.price=ko.pureComputed(函数(){
把这顿饭还给我,价格是多少;
});
} 

在您的代码中,价格会得到更新,因为
SeatReservation.mean
是可观察的,因为它绑定到html模板中的

因此,当您使用
fine().price
时,您正在访问可观察的膳食中的对象,并访问price属性

这和写作一样:

<td data-bind="text:price"></td>

function SeatReservation(name, initialMeal){
this.price = ko.pureComputed(function(){
   return this.meal().price;
});
} 

函数SeatServation(名称,初始值){
this.price=ko.pureComputed(函数(){
把这顿饭还给我,价格是多少;
});
} 

您是在谈论select标记属性
值:MEIN
?好的,但可观测值应该声明为
MEIN()
对吗?那么为什么要使用
value:fine
?您只使用
fine()
,当您想要访问可观察对象内部的对象时,它就像一个
get
函数<代码>值:之所以使用MEIN
,是因为您传递的是
可观察的
本身,而不是其中的对象。因此,当用户选择其他选项时,
选项
绑定会更改可观察到的
膳食的值。+1,与
Jquery
类似,在
Knockout
中,为什么我无法调试并查看下拉列表更改时哪个函数会被命中?由于
选项
绑定会自动更改可观察到的
膳食
项,您可以通过订阅
this.mean
来调试它
this.mean.subscribe(function(mean){console.log(mean.price);})
您是在谈论select标记属性
value:mean
?好的,但是可观察的应该声明为
mean()
对吗?那么为什么要使用
value:fine
?您只使用
fine()
,当您想要访问可观察对象内部的对象时,它就像一个
get
函数<代码>值:之所以使用MEIN
,是因为您传递的是
可观察的
本身,而不是其中的对象。因此,当用户选择其他选项时,
选项
绑定会更改可观察到的
膳食的值。+1,与
Jquery
类似,在
Knockout
中,为什么我无法调试并查看下拉列表更改时哪个函数会被命中?由于
选项
绑定会自动更改可观察到的
膳食
项,您可以通过订阅
this.mean
来调试它
this.dine.subscribe(函数(餐){console.log(餐.价);})