2012-03-02 59 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