2

这是我尝试结合 Knockoutjs.com 网站上的 Knockout 级联购物车编辑器实时示例中的代码,以及 RP Niemeyer 的数据绑定嵌套数组示例,以尝试实现一个级联购物车,并以 Niemeyer 给出的功能格式扩展产品选项。

  1. 为什么数量字段不更新小计?
  2. 为什么“删除”不起作用?
  3. 为什么 formatCurrency(price) 会产生“无法解析绑定”错误?
  4. 为什么更改产品字段不会更新价格,但如果按下“添加产品”按钮,更改将出现在下一行?
  5. 在 Niemeyer 的示例中,'add-product' 是函数范围内的方法,而不是我为 'subtotal' 方法复制的 cartLine - 哪个是处理这些操作的更好地方?

感谢 S.Sanderson、RPNiemeyer、J.Papa 在社区中为推广 Knockout 所做的令人难以置信的努力。这很棒!

4

1 回答 1

3

好吧,所以你的小提琴比它需要的要复杂一些,但我试图不理会结构,以防你打算扩展。我确实有几个问题,但我会在最后回答这些问题。首先,你的问题:

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

  2. 您的分层错误,removeLine 正在寻找 cartLine 上的函数并发送产品,但您在 viewmodel 上有该函数并且需要 cartLine。将删除线移动到最外层的上下文修复了这个问题。

  3. 我没有收到这个错误。

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

  5. 我认为您为 Niemeyer 链接到了错误的小提琴,您链接的小提琴中没有产品。

这是您的代码的工作小提琴。它仍然有点混乱,因为我再次尝试不要弄乱我需要的东西。你真的应该考虑重组数据和/或视图模型,它不需要这么复杂。不过,我删除了一些分层,因为它与您的视图模型不匹配。

此外,您的 category.subscribe 方法在小计的计算 observable 内部。我把它移到外面,放到模型上。

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

所以,我的问题:

  1. 为什么数据和对象定义中的产品和选项都有数量?
  2. 为什么每个产品、类别和购物车都有小计?
  3. 为什么菜单和视图模型上有总计?3a。为什么菜单上有总计?这是没有意义的。
于 2012-06-04T22:06:50.217 回答