2013-10-14 68 views
0

我目前使用的是最新版本的breezejs(1.4.2),與requirejs和淘汰賽。我有以下需要配置...BreezeJs,RequireJs和淘汰賽,但沒有observables

require.config({ 
paths: 
{ 
    "jquery": "../Scripts/jquery-1.10.2.min", //using jquery 1.x for older browsers 
    "bootstrap": "../Scripts/bootstrap.min", 
    "knockout": "../Scripts/knockout-2.3.0", 
    "knockoutMapping": "../Scripts/knockout.mapping-latest", 
    "toastr": "../Scripts/toastr.min", 
    "Q": "../Scripts/Q.min", 
    "es5-shim": "../Scripts/es5-shim.min", 
    "es5-polyfill": "../Scripts/es5-polyfill", 
    "breeze": "../Scripts/breeze.min", 
    "kendo": "../Scripts/kendo/2013.2.716/kendo.web.min", 
    "knockoutKendo": "../Scripts/knockout-kendo.min", 
    "globalize": "../Scripts/globalize/globalize", 
    "globalize-au": "../Scripts/globalize/cultures/globalize.culture.en-AU" 
}, 
shim: 
{ 
    "jquery": { exports: "$" }, 
    "knockout": { deps: ["jquery"] }, 
    "Q": { deps: ["jquery", "knockout"] }, 
    "breeze": { deps: ["knockout", "jquery", "Q", "es5-shim", "es5-polyfill"] }, 
    "globalize-au": { deps: ["globalize"] }, 
    "bootstrap": { exports: "Bootstrap", deps: ["jquery"] }, 
    "kendo": { deps: ["jquery"] }, 
    "knockoutKendo": { deps: ["knockout", "kendo"] }, 
    "knockoutMapping": { deps: ["knockout"] } 
} 

});

看着網絡流量,breeze.min.js在所有上面列出的依賴關係之後被加載,但仍然得到了微風查詢返回的常規JSON對象,而不是像我所期望的那樣擊倒可觀察屬性。

如果我在requirejs之外添加knockout腳本,在breeze腳本之前使用標準腳本標記,則一切正常。所以,這確實暗示了我無法解決的依賴性和加載順序偏好的問題。

這是我用來返回微風實體的示例查詢。請注意,我所有的微風查詢都會返回具有不可觀察屬性的實體:

// Look for the log in manager"s cache first 
    // Fetch from the database if not found in cache 
    return manager 
     .fetchEntityByKey("SqlLog", sqlLogId, true) 
     .then(function (data) 
     { 
      log("Retrieved [SQL DETAILS] from remote data source", data, true); 

      // using entity values here as breeze not returning observables. 
      sqlText(data.entity.SqlText); 
      parameters(data.entity.Parameters); 
      exceptionMessage(data.entity.ExceptionMessage); 
     }) 
     .fail(queryFailed); 
+0

顯示您的查詢。 –

回答

1

自己碰到了那個。快速的答案是微風堅持只看「ko」,所以你可以在你的配置中使用它。

技術原因是微風明顯尋找「ko」。要找到所有的微風,需要在源代碼中搜索「requireLib」(不是全部單詞)。

Breeze總是首先尋找全球性的,而且淘汰賽的全球性是'風'搜索的'酷'。

所以當在RequireJS之外加載knockout時,它不是時序,而是解決你的問題的「ko」var name可用性。

在我的相關答案查看更多詳細信息Difference between "Q" and "q" in angularjs and requirejs

+0

在我的情況下,我仍然需要使用淘汰賽作爲全壘打Knockout-Kendo也需要'淘汰賽'。我使用了提供的鏈接中建議的映射。謝謝! – user2877723

+0

更多的經驗讓我現在得出了不同的結論。請參閱http://stackoverflow.com/a/20487990/525788。 – RockResolve