2013-03-23 25 views
1

我有一個ASP.NET MVC應用程序,它使用WebAPI作爲數據,而KnockOutJS作爲前端。在大多數情況下,事情工作得很好,但是我開始意識到,更新值時,這些值不會反映在綁定元素中。瞭解ko.mapping.fromJSON

原因是因爲數據正在從服務器傳遞爲JSON,並且正在被轉換爲普通的JSON對象。換句話說,沒有屬性被映射爲「可觀察對象」,所以當我改變對象的值時,什麼都不會被更新。

我讀了關於KnockOutJS插件的一個名爲「映射」的插件,但我無法弄清楚它的正確語法。我希望別人已經處理了這個,並有一些建議。這裏是我當前的代碼:

<script type="text/javascript"> 
    function BlogViewModel() { 
     var self = this; 
     self.blogs = ko.observableArray(); 
     var baseUri = '@ViewBag.ApiUrl'; 

     //$.getJSON(baseUri, self.blogs); 
     $.getJSON(baseUri, {}, 
       function (data) { 
        ko.mapping.fromJSON(data, self.blogs); 
       }); 
    } 

    $(document).ready(function() { 
     ko.applyBindings(new BlogViewModel()); 
    }); 

    }); 
</script> 

註釋掉部分($ .getJSON(基本URI,self.blogs);)是幹什麼用在那裏,和「作品」關於獲取和顯示數據。

下面的代碼是我嘗試讀取數據並將映射應用到它。它根本不工作。換句話說,我在頁面上看不到任何數據。

我敢肯定我錯過了一些明顯的東西?

+1

回首時,看到你的問題......你找到你要找的東西?如果是這樣,請發佈您的答案! – beauXjames 2013-11-01 21:14:01

+0

我有同樣的問題。它發生在有時在服務器端更新了一個對象。我收到一個結果來查看後,我需要發射DOM更新。你有沒有找到解決方案? – 2016-07-19 09:55:01

回答

2

地圖的JSON數據KO視圖模型是這樣的:

ko.mapping.fromJSON(data, {}, self.blogs);