淘汰赛:可观察到,无默认值

Vumaasha

我只是在学习淘汰赛,遇到了使用列表的教程。

function SeatReservation(name, initialMeal) {
    var self = this;
    self.name = name;
    self.meal = ko.observable(initialMeal);

    self.formattedPrice = ko.computed(function() {
        var price = self.meal().price;
        return price ? "$" + price.toFixed(2) : "None";        
    });
}

在本教程中,此代码定义了可观察的餐食,这将是在下拉选择中选择的选项。如果我没有默认值,例如说我想使用单选组而不是select。我希望能够创建一个没有任何默认值的可观察对象。我尝试使用空字符串作为默认值,然后它可以工作

self.meal = ko.observable("");

反之,如果我尝试将null作为默认值,则选择选项甚至不会出现。

self.meal = ko.observable(null); // not working

什么是创建没有默认值的可观察对象的正确方法?

nemesv

当然,您可以null使用

 self.meal = ko.observable(null);

undefined

 self.meal = ko.observable();

但是,在这种情况下,您必须处理以下情况:meal如果实际上if,null或者undefined因为当您编写类似self.meal().price;内容的内容时会因为尝试访问“ nothing”属性而引发异常

因此,您需要修复formattedPrice计算出的内容:

self.formattedPrice = ko.computed(function() {
    if (!self.meal())
        return "None";
    var price = self.meal().price;
    return price ? "$" + price.toFixed(2) : "None";        
});    

然后totalSurcharge计算以检查self.meal()情况:

self.totalSurcharge = ko.computed(function() {
   var total = 0;
   for (var i = 0; i < self.seats().length; i++)
   {
       if (self.seats()[i].meal())
       total += self.seats()[i].meal().price;
   }
   return total;
}); 

演示JSFiddle

注意:它偶然使用空字符串(因为空字符串是一个对象,因此可以有效地访问它们上的属性,self.meal().price但是所有这些属性都将返回undefined),因此这不是一个正确的解决方案。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

当无法观察到淘汰赛或禁用JS时显示默认值

来自分类Dev

淘汰赛计算可观察到的参数

来自分类Dev

淘汰赛可观察到的表演

来自分类Dev

淘汰赛移除率从可观察到的限制

来自分类Dev

淘汰赛可观察到的最新价值

来自分类Dev

可观察到淘汰赛更新

来自分类Dev

淘汰赛可观察到的数组,更改事件获得更新的项目值

来自分类Dev

可观察到淘汰赛-为什么此值会自动更新?

来自分类Dev

浏览器之间可观察到的淘汰赛共享-仅在本地更改值时订阅

来自分类Dev

淘汰赛:更改可观察值

来自分类Dev

淘汰赛-添加了可观察到的不更新新对象的功能

来自分类Dev

选择的下拉值更改时,可观察到的淘汰赛未更新

来自分类Dev

通过访问observableArray计算出可观察到的淘汰赛

来自分类Dev

可观察到的淘汰赛:手动应用扩展剂

来自分类Dev

从可观察到的淘汰赛中删除最后一个角色

来自分类Dev

用FuelUX树订阅可观察到自定义Jquery事件的淘汰赛

来自分类Dev

淘汰赛-添加了可观察到的未在新对象上更新的功能

来自分类Dev

为什么可观察到的不通知是否阻止了淘汰赛?

来自分类Dev

从可观察到的淘汰赛中删除最后一个角色

来自分类Dev

选择的下拉值更改时,可观察到的淘汰赛未更新

来自分类Dev

将recaptcha响应放入可观察到的js淘汰赛中

来自分类Dev

淘汰赛无法观察到样式属性

来自分类Dev

使用ko.mapping.fromJS更新异步ajax调用后可观察到的淘汰赛

来自分类Dev

更新扩展程序中可观察到的淘汰赛js时如何保留光标位置

来自分类Dev

当儿童可观察到的更新时,淘汰赛js css似乎没有重新计算

来自分类Dev

淘汰赛:链接可观察的数组

来自分类Dev

淘汰输入扩展程序,无论输入如何,均可观察到的值会在首次通过时返回其默认值

来自分类Dev

如何从淘汰赛验证中观察到的删除验证规则[扩展程序]

来自分类Dev

淘汰赛-我可以将DOM属性绑定到可观察对象吗?

Related 相关文章

  1. 1

    当无法观察到淘汰赛或禁用JS时显示默认值

  2. 2

    淘汰赛计算可观察到的参数

  3. 3

    淘汰赛可观察到的表演

  4. 4

    淘汰赛移除率从可观察到的限制

  5. 5

    淘汰赛可观察到的最新价值

  6. 6

    可观察到淘汰赛更新

  7. 7

    淘汰赛可观察到的数组,更改事件获得更新的项目值

  8. 8

    可观察到淘汰赛-为什么此值会自动更新?

  9. 9

    浏览器之间可观察到的淘汰赛共享-仅在本地更改值时订阅

  10. 10

    淘汰赛:更改可观察值

  11. 11

    淘汰赛-添加了可观察到的不更新新对象的功能

  12. 12

    选择的下拉值更改时,可观察到的淘汰赛未更新

  13. 13

    通过访问observableArray计算出可观察到的淘汰赛

  14. 14

    可观察到的淘汰赛:手动应用扩展剂

  15. 15

    从可观察到的淘汰赛中删除最后一个角色

  16. 16

    用FuelUX树订阅可观察到自定义Jquery事件的淘汰赛

  17. 17

    淘汰赛-添加了可观察到的未在新对象上更新的功能

  18. 18

    为什么可观察到的不通知是否阻止了淘汰赛?

  19. 19

    从可观察到的淘汰赛中删除最后一个角色

  20. 20

    选择的下拉值更改时,可观察到的淘汰赛未更新

  21. 21

    将recaptcha响应放入可观察到的js淘汰赛中

  22. 22

    淘汰赛无法观察到样式属性

  23. 23

    使用ko.mapping.fromJS更新异步ajax调用后可观察到的淘汰赛

  24. 24

    更新扩展程序中可观察到的淘汰赛js时如何保留光标位置

  25. 25

    当儿童可观察到的更新时,淘汰赛js css似乎没有重新计算

  26. 26

    淘汰赛:链接可观察的数组

  27. 27

    淘汰输入扩展程序,无论输入如何,均可观察到的值会在首次通过时返回其默认值

  28. 28

    如何从淘汰赛验证中观察到的删除验证规则[扩展程序]

  29. 29

    淘汰赛-我可以将DOM属性绑定到可观察对象吗?

热门标签

归档