Knockout购物车编辑器示例问题:使用嵌套数组和函数扩展级联下拉菜单

时间:2012-06-04 19:56:26

标签: arrays data-binding nested knockout.js shopping-cart

这里是Knockoutjs.com网站上Knockout层叠购物车编辑器实时示例的my fiddle attempt组合代码,以及RP Niemeyer的data binding nested arrays 示例,尝试实现一个扩展了产品选项的级联购物车Niemeyer给出的功能格式。

  1. 为什么数量字段不会更新小计?
  2. 为什么不“删除”工作?
  3. 为什么formatCurrency(price)会产生“无法解析绑定”错误?
  4. 为什么更改产品字段不会更新价格,但如果按下“添加产品”按钮,更改将显示在下一行?
  5. 在Niemeyer的例子中“添加产品”并且是函数范围内的方法而不是cartLine,我将其复制为“小计”方法 - 这是处理这些操作的更好地方?
  6. 感谢S.Sanderson,R.P.Niemeyer,J.Papa在社区推广Knockout方面的出色工作。太棒了!

1 个答案:

答案 0 :(得分:3)

好吧,所以你的小提琴比它需要的要复杂一点,但是我试图单独留下结构,以防你计划扩展。我确实有几个问题,但我会在最后得到那些问题。首先,你的问题:

  1. 您有多个数量和小计属性,每个对象一个(行,类别和产品)。你的分层让他们感到困惑(老实说)。我删除了模型上的额外数量和小计属性,无论如何都没有意义,但我把它们留在了你的数据中。你应该真正理清你想要的样子。

  2. 您的分层错误,removeLine正在寻找cartLine上的一个函数,然后发送产品,但您在viewmodel上有这个功能,需要cartLine。将删除行移动到最外层的上下文修复了这个。

  3. 我没有收到此错误。

  4. 您的价格没有得到正确的更新。这是一个上下文分层问题。

  5. 我认为你联系到了Niemeyer的错误小提琴,你链接的那个没有产品。

  6. 以下是代码的working fiddle。它仍然有点凌乱,因为我再次尝试不要超过我需要的东西。你真的应该考虑重构数据和/或视图模型,但它不需要这么复杂。我删除了一些分层,因为它与你的viewmodel不匹配。

    此外,您的category.subscribe方法是INSIDE计算的可观察小计。我将它移到了外面,进入模型。

    注意:我在小提琴中使用knockout2.0。请考虑更新。 Knockout1.3Beta没有以相同的方式实现控制流,这导致了我没有谈到的单独错误。

    所以,我的问题:

    1. 为什么数据和对象定义中的产品和选项都有数量?
    2. 为什么每个产品,类别和cartLine都有小计?
    3. 为什么菜单和视图模型上有一个格式? 3A。为什么菜单上有一个完整的菜单呢?这毫无意义。