2013-08-28 21 views
2

我是Durandal的新人,想用我的框架重寫我現有的挖空項目。在我的舊項目中,我正在使用knockout貼圖插件,現在我遇到了問題。我以Durandal樣本項目爲基礎工作。這裏是我的一段代碼:如何在Durandal中使用knockout貼圖插件?

define(['durandal/app', 'durandal/system', 'knockout'], function (app, system, ko) { 

    var clients = ko.observableArray([]); 

    return {  
     clients: clients, 

     activate: function(data) { 
      var self = this; 
      ko.mapping.fromJS(getData(), {}, self.clients); 
     } 
    }; 
}; 

的錯誤是:

Uncaught TypeError: Cannot call method 'fromJS' of undefined

事實上,這是不確定的,但我應該在哪裏添加它,使它的工作?

謝謝。

回答

0

您應該在define中添加映射插件,否則不會加載它。

define(['durandal/app', 'durandal/system', 'knockout', 'knockout-mapping'], function (app, system, ko) { 

請確保您能夠在requirejs配置中像這樣加載此腳本。

我建議你加載Knockout和main.js中的映射插件,這樣你就不需要在所有視圖模型中保持「要求」它們。您也可以將它們分開捆綁,而不是加載程序的一部分。

+0

最後一段似乎不是一個好主意。請澄清你的意思? 如果依賴關係是在其他地方定義的,你會如何自行測試模塊? –

+0

我同意測試,可能是一個好主意,將Knockout添加爲模塊中的依賴項。但是,如果你認爲Knockout作爲第三方庫(不是你想測試的模塊),我認爲把它放在所有模塊中是沒有意義的。 IMO淘汰賽應該是屬於系統核心的庫,而不是特定的模塊。 – margabit

相關問題