2014-04-04 91 views
-1

我想要獲取計算值並將這些值推送到可觀察數組。 Web Api控制器返回簡單的值 - 只是沒有json wrap的純數字。可能是這個問題。請告知,因爲我是Knockout的新手。 P.S.這是兩個ajax調用,因爲他們調用不同的api控制器。Knockout.js計算可觀察不綁定到可觀察數組

function GrafikViewModel(grafikUri) { 
      var self = this; 
      self.books = ko.observableArray(); 
      self.PaxLeft = ko.computed(function() { 
       ko.utils.arrayForEach(self.books(), function (book) { 
        $.getJSON("/api/orders/getpax/" + book.kodg, function (item) { 
         self.books().push(item); 
        }); 
       }, GrafikViewModel) 
      }); 
      $.getJSON(grafikUri, function (data) { 
       self.books(data.$values); 
      }); 
     } 
+0

你想用一個副作用一個計算的?你確定?順便說一句,你已經在這裏創建了一個循環依賴關係 - 一個計算結果改變了「書」,並對「書」上的變化做出了反應。我認爲你在錯誤的軌道上,請解釋你實際上想要做的事情。 – Tomalak

+0

副作用是什麼意思?關於循環依賴你是對的。我應該改變它是self.PaxLeft(這是ko.observable)?實際上,我的目標是從兩個不同的控制器獲取數據,並將它們放到同一個observableArray中。 –

+0

我在想第一個ajax調用。難道這是控制器返回只是純粹的整數值,沒有任何JSON包裝的問題? –

回答

0

我不得不做一些猜測,但我相信你想要的是

self.books.push(item); 

,而不是

self.books().push(item); 

注意失蹤()那裏。淘汰賽觀察陣列「鏡像」大部分陣列的功能。通過使用這些代替Array提供的那些,淘汰賽可以跟蹤發生在包裹陣列上的變化。

編輯:您可以在http://knockoutjs.com/documentation/observableArrays.html#manipulating-an-observablearray找到的所有的「鏡像」功能的列表,大約兩頁下(節「操控的observableArray」)

+0

我確實改變了,但這沒有幫助。 –