私は現在、requirejsとノックアウトを備えた最新バージョンのbreezejs(1.4.2)を使用しています。次の必要な構成があります...
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 が読み込まれますが、予想どおり、breeze クエリによって通常の JSON オブジェクトが返され、観測可能なプロパティをノックアウトすることはありません。
風スクリプトの前に標準のスクリプト タグを使用して、requirejs の外部にノックアウト スクリプトを追加すると、すべてが機能します。したがって、これは、解決できない依存関係と読み込み順序の設定に関する問題を示唆しています。
これは、微風エンティティを返すために使用しているサンプル クエリです。私の現在の微風クエリはすべて、観察できないプロパティを持つエンティティを返すことに注意してください。
// Look for the log in manager"s cache first
// Fetch from the database if not found in the 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);