1

Ember.js のモデル プロパティへのアクセスに問題があります

モデル:

App.Page = DS.Model.extend({
  title: DS.attr('string'),
  parent: DS.attr('number'),
});

コントローラ:

App.BlocksController = Ember.ArrayController.extend({

  pages: function() {
    return App.Page.find();
  }.property(),

  pageTree: function() {
    var pages = this.get('pages.content'),
        pageTree = new Tree();
    for(var i = 0; i < pages.length; i++) {
        console.log( pages[i], pages[i].id, pages[i].parent );
    }
    pageTree.insertList(pages);
    return pageTree;
  }.property('pages.@each'),

});

pageTreeテンプレート/ビューでプロパティを使用します。console.logAPI から取得したオブジェクト (を含む) を出力しますが、そのidプロパティにアクセスできません (parentを提供しますundefinedが、API 応答にあります)。

1console.log行は次のようになります。

Object {id: "5", clientId: 19, type: function, data: Object, prematerialized: Object…}
"5"
undefined 

プロパティとして使用するpages.@eachと、プロパティpageTreeは(ロードされた)ページ配列にバインドされる必要があります。

はい、pagesArrayController によって制御されるモデルではなく、モデルの二次セットです。

{{#each pages}}{{parent}}{{/each}}テンプレートで使用すると機能します!それで、問題はデータバインディングに関係していると思いますか?

参考までに、私は Ember 1.0.0-rc.6.1、ember-data 0.13、ember-data-django-rest-adapter 0.13 を使用しています。

4

1 に答える 1

2

わかりました、IRC に感謝します:

pageTree: function() {
  var pages = this.get('pages'),
    pageTree = new Tree();
  pages.forEach(function(page) {
    //console.log(page, page.get('parent'));
    pageTree.insertAt(page.get('parent'), page );
  });
  return pageTree;
}.property('pages.@each'),

だから、いいえ.content、しかしforEach、そして.get()

于 2013-08-03T20:00:50.677 に答える