2017-03-22 41 views
1

我用下面的代码获得knockoutJs选定值

<select data-bind="options: preferedTimeToPickup,optionsCaption: 'Choose...', 
    optionsText: 'name',value: preferedTimeToPickupVal" id="u3413_input" class="text_sketch"> 
</select> 

在KnockoutJs

this.preferedTimeToPickup = 
     [{name:"Specific: 8:00",price:10.25}, 
     {name:"Specific:9:00",price:12.25 }, 
     {name:"Specific: 10:00",price:13.25} 
     ]; 
     this.preferedTimeToPickupVal = ko.observable(); 

当我试图让价格选择使用下面的代码选择同时传递值select data

this.subtotal = ko.computed(function() { 
      return this.preferedTimeToPickupVal().price; 
}); 

我得到以下错误

Uncaught TypeError: Cannot read property 'preferedTimeToPickupVal' of undefined 

任何一个可以请帮我在这。

+0

我是新来的knockoutJs,我不明白这个错误。请解释。 –

回答

1

由于您computed功能你指的是使用this关键字您的视图模型的实例,你需要通过它的功能方面的计算

this.subtotal = ko.computed(function() { 
    // now 'this' refers to your view-model, but you first 
    // need to check if 'preferedTimeToPickupVal' is set 
    var preferred = this.preferedTimeToPickupVal(); 

    if (preferred) 
     return preferred.price; 
    else 
     return 0; 
}, this); 

此外,您还需要在您访问price属性之前检查preferedTimeToPickupVal是否为空。

请参阅Documentation

+0

@ Krishati95Dev,看到我的更新 – haim770

+0

@ojeijr,赞赏这个答案,非常感谢。 –