1

したがって、私のアプリでは、レールDB側からテーブルにロードしているため、非常に遅くなり、私の小さな$('tr:even')。addClass( "trAlt"); -1 trのみを読み取り、スタイリングにcssクラスを適用しません。次のように、スクリプトをdidInsertElementに配置しました。

App.RecordsView = Ember.View.extend({
    templateName: 'records/index',
    contextBinding: 'App.RecordController',
    didInsertElement: function(){
         $('tr:even').addClass("trAlt")
    }
});

しかし、最初の負荷は1 tr行(見出し)であり、ビューが変更されても、Emberは発火しません。ほとんどのコードはこの質問と同じです。

4

3 に答える 3

2

{{each}}次のように、のブロックレス形式を使用して、jQueryコードを各行のdidInsertElementに移動することを検討してください。

App.RecordsView = Ember.View.extend({
    templateName: 'records/index',
    contextBinding: 'App.RecordController'
});

App.RecordRowView = Ember.View.extend({
    templateName: 'records/record',
    tagName: 'tr',
    didInsertElement: function(){
      $('tr:even').addClass("trAlt")
    }
});

// in records/index.hbs
{{each controller itemViewClass="App.RecordRowView"}} 

http://emberjs.com/api/classes/Ember.Handlebars.helpers.html#method_each

于 2013-02-07T23:45:55.493 に答える
0

プレーンCSSを使用してテーブルのスタイルを自動的に設定できますか?didInsertElement()これは、が呼び出された後に追加された場合でも、行に適用されます。

CSS:

tr:nth-of-type(even) {
  background-color:red;
}

JSBinの例

于 2013-02-07T19:56:46.633 に答える
0

isLoadedコントローラのコンテンツのプロパティを確認できます。

App.RecordsView = Ember.View.extend({
    templateName: 'records/index',
    contextBinding: 'App.RecordController',

    onRecordsLoaded: function () {
        $('tr:even').addClass("trAlt");
    }.observes('App.RecordController.content.isLoaded')
});
于 2013-02-07T20:10:36.203 に答える