3

単純な MVC4 + ko +そよ風の webapp で次の問題があります。クエリによって返されるそよ風のエンティティは、ko オブザーバブルのない単純な JavaScript オブジェクトです。todo サンプル (これは ko オブザーバブルを正しく返します) を調べましたが、ブリーズが ko で動作する (そしてオブザーバブルを生成する) ように構成されている場所が見つかりませんでした。次の行を追加しようとしましたが、何も変わりませんでした:

var core = breeze.core;
var entityModel = breeze.entityModel;

core.config.setProperties({
    trackingImplementation:     entityModel.entityTracking_ko,
    remoteAccessImplementation: entityModel.remoteAccess_webApi
});

あなたの親切な助けに前もって感謝します

4

3 に答える 3

4

私の問題は、そよ風の後にノックアウトをロードしたため、そよ風がPOJOオブジェクトを返したことです。

<script src="Scripts/jquery-1.9.1.js"></script>
<script src="Scripts/q.js"></script>
<script src="Scripts/breeze.debug.js"></script>    
<script src="Scripts/knockout-2.1.0.debug.js"></script>
<script src="Scripts/toastr.js"></script>
<script src="Scripts/require.js" data-main="App/main"></script>    

読み込み順序を変更した後、breeze は KO オブザーバブルを返しました。

<script src="Scripts/jquery-1.9.1.js"></script>
<script src="Scripts/q.js"></script>
<script src="Scripts/knockout-2.1.0.debug.js"></script>
<script src="Scripts/breeze.debug.js"></script>    
<script src="Scripts/toastr.js"></script>
<script src="Scripts/require.js" data-main="App/main"></script>    
于 2013-05-25T08:45:14.120 に答える
4

@frenchfraso - コードを書いたので、Breeze のいくつかの改善点を知っておく価値があるかもしれません。

名前entityModel空間は廃止され、その上にあったものはすべて に昇格しましたbreeze。名前entityModel空間は引き続き機能しますが、時間があれば削除したいと考えています。今日の EntityManager の作成方法は次のとおりです。

  var manager = 新しいそよ風.EntityManager(serviceName);

Knockout がデフォルトの「modelLibrary」アダプターになり、Web API がデフォルトの「dataservice」アダプターになったため、breeze コアを構成する必要がなくなりました。

つまり、質問のコードのすべての行を簡単に削除できます:)

デフォルト以外の Breeze アダプタを指定する新しい構文があります。以下は、Knockout の代わりに Backbone モデル ライブラリを使用するように Breeze を構成する例です。

  Breeze.core.config.initializeAdapterInstances({modelLibrary: "backbone"});
于 2012-11-27T19:27:39.563 に答える
2

わかった!問題は、WebApi コントローラーでいくつかの属性が欠落していたことにありました。

[JsonFormatter, ODataActionFilter]
public class MyController : ApiController
{
    // my methods...
}

[JsonFormatter, ODataActionFilter] を追加した後、返されたエンティティには予期された ko オブザーバブルが含まれていました!

于 2012-11-27T14:52:24.727 に答える