2013-06-05 37 views
2

我有一個問題試圖讓knockout與requirejs很好地玩(並根據這裏的帖子數量來判斷,所以其他人!)。我在這裏讀到的任何東西都遇到過這個問題。requirejs&knockoutjs ko.computed傳遞函數返回ko.computed的值

下面是我的配置的要求:

requirejs.config({ 
    "baseUrl": "/js", 
    "paths": { 
     "Model": "App/Model", 
     "Development": "App/Development", 
     "Property": "App/Property", 
     "codemirror": "vendor/codemirror/codemirror-2.37/lib/codemirror", 
     "galleria": "vendor/galleria/galleria-1.2.9", 
     "jquery": "vendor/jquery/jquery-2.0.0", 
     "jquery-ui": "vendor/jquery-ui/jquery-ui-1.10.2", 
     "jshint": "vendor/jshint/jshint-1.1.0", 
     "knockout": "vendor/knockout/knockout-2.2.1", 
     "signalr": "vendor/signalR/jquery.signalR-1.0.1" 
    }, 
    "shim": { 
     "galleria": { 
      deps: ["jquery"] 
     }, 
     "jquery-ui": { 
      deps: ["jquery"] 
     }, 
     "signalr": ["jquery"], 
     "/signalr/hubs": { 
      deps: ["jquery", "signalr"] 
     }, 
     "Development/ViewModel/CreateDevelopment": { 
      deps: ["signalr", "knockout"] 
     }, 
     "knockout": { 
      deps: ["jquery"], 
      exports: "knockout" 
     } 
    } 
}); 

所以這應該讓我所有的依賴關係,而事實上它。這是要求位:

require(["Development/ViewModel/CreateDevelopment"], function (CreateDevelopment) { 

    $.connection.hub.start().done(function() { 
     if (CreateDevelopment !== undefined && CreateDevelopment !== null) { 
      var createDevelopment = new CreateDevelopment(); 
      createDevelopment.init(); 
     } 
    }); 
}) 

我可能需要引入singalr jquery位,但那不是我有問題。

當我定義我的模塊,我不斷收到以下錯誤:

Uncaught Error: Pass a function that returns the value of the ko.computed (Line 44) 

這裏是我的模塊

define(["Model/developmentType", "knockout", "signalr", "/signalr/hubs"], function (developmentType, ko) 

現在,如果我使用的console.log(KO)我可以在看到的一切庫,所以我不明白爲什麼我不斷收到這個錯誤。

在需要越來越庫的順序如下:

  • RequireJS
  • 主AppJs
  • Jquery的
  • Jquery的SignalR
  • 敲除
  • 視圖模型
  • 模型
  • 集線器

    未捕獲的錯誤:傳遞返回ko.computed

調用堆棧的值的函數: call stack

任何幫助,這將大大的好評!

+0

您可以共享該文件的第44行:

self.typeList = ko.dependentObservable(); 

應替換? –

+0

其knockoutjs庫 - 它已被縮小:( – Matt

+0

https://github.com/knockout/knockout/blob/master/src/subscribables/dependentObservable.js線18 – Matt

回答

3

由於Knockout 2.0,依賴的observables被稱爲計算的observables。所以:

self.typeList = ko.computed(function(){ 
    // Compute value here... 
    return value; 
}); 
相關問題