2012-03-02 64 views
0

这里居住的是小提琴 http://jsfiddle.net/srinivasanvee/yYEwJ/2/淘汰赛JS - 观察到的阵列需要从细节对象

我有有类别,产品,数量为列一个清单, 我必须从增加新的类别选项下拉本身(选择 - 添加新 - 选项), 想从类别subscribe方法填充categoryList observableArray(因为新添加的值必须应用于网格的所有行), 不确定如何做到这一点,尝试与$ root.categoryList.push(名称),但没有运气

或者我们有ev更好的方式来处理这种情况? 对此的帮助非常感谢,提前感谢。

回答

1

$root这样的变量仅在绑定中可用。

完成此工作的一种方法是将对根视图模型的引用传递给cartLine构造函数。

你cartLine最终会看起来像:

var cartLine = function(data1, root) { 
    this.category = ko.observable(data1.category); 
    this.product = ko.observable(data1.product); 
    this.quantity = ko.observable(data1.quantity); 

    this.category.subscribe(function(newValue) { 
     if (newValue == "--Add New--") { 
      var name = prompt("Enter Table Name"); 
      if (name == null) { 
       return false; 
      } 
      else { 
       root.categoryList.push(name); 
      } 
     } 
    }); 
}; 

然后,你只需要通过this在从您的视图模型中的第二个参数创建一个新的cartLine时。此处示例:http://jsfiddle.net/rniemeyer/kzZSH/

否则,您可以像创建cartLine一样创建cartLine,并在获取对新行的引用之后订阅viewModel。

+0

明白了,它的工作原理,非常感谢。 – Srini 2012-03-02 02:07:34