1

アプリケーションテンプレートでコンセントがすでに接続されているかどうかを確認するにはどうすればよいですか?renderTemplate()で、アウトレットを実際に接続する必要があるかどうかを確認したいと思います(パフォーマンス上の理由から)。最終的なコードは次のようになります。

renderTemplate: function(controller, model) {
    var isMyOutletConnected =  //how to do that?

    if(!isMyOutletConnected){
        this.render('someTemplate', {   // the template to render
          into: 'application',          // the template to render into
          outlet: 'someOutlet',       // the name of the outlet in that template
          controller: "someController"  // the controller to use for the template
        });
    }
}

コンテナを使用して、次の方法でアプリケーションビューを検索しようとしましたcontainer.lookup("view:application) が、これにより、既存のビューを返す代わりに、新しいビューがインスタンス化されました。

4

2 に答える 2

0

要素がdomに挿入されたときに、Jqueryプラグインを使用してコールバックを登録します。livequeryこれは、ビュー自体で実行できます

この質問を参照してください

于 2013-02-11T17:35:45.857 に答える
0

ご入力いただきありがとうございます。これは私が思いついた解決策です:

1-シングルトンビューのビューレジストリを作成します。ビューレジストリはアプリケーションインスタンスに存在し、そのプロパティはdidInsertElementのビューによって設定されます。

var App = Ember.Application.create({
    viewRegistry : {
        applicationView : null
    }
});

App.ApplicationView = Ember.View.extend({
    templateName : 'application',
    didInsertElement : function(){
        App.set("viewRegistry.applicationView", this);
    }
});

2-これで、このレジストリにアクセスして、ルート内の接続されたコンセントを確認できます。

isOutletOfApplicationViewConnected : function(outletName){
    var applicationView = App.viewRegistry.applicationView;
    if(applicationView){
        return applicationView.get("_outlets." + outletName) != undefined;
    }else{
        return false;
    }
},
renderTemplate: function(controller, model) {
    var isMyOutletConnected =  this.isOutletOfApplicationViewConnected("someOutlet");

    if(!isMyOutletConnected){
        this.render('someTemplate', {   // the template to render
          into: 'application',          // the template to render into
          outlet: 'someOutlet',       // the name of the outlet in that template
          controller: "someController"  // the controller to use for the template
        });
    }
}

メソッド「isOutletOfApplicationViewConnected」が私のアプリケーションビューに組み込まれているため、このソリューションはより一般的である可能性がありますが、これは良い始まりであり、私にとってはうまくいきます。

于 2013-02-12T10:56:15.247 に答える