Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
值显示为[object]ember.js_Ember.js - Fatal编程技术网

值显示为[object]ember.js

值显示为[object]ember.js,ember.js,Ember.js,我正在尝试为模型设置属性,但嵌套对象时遇到问题。这是我的 App.Posts = DS.Model.extend({ title: DS.attr('string'), author: { name: DS.attr('string') }, date: DS.attr('date'), excerpt: DS.attr('string'), body: D

我正在尝试为模型设置属性,但嵌套对象时遇到问题。这是我的

App.Posts = DS.Model.extend({
        title:  DS.attr('string'),
        author: {
            name:   DS.attr('string')
        },
        date:   DS.attr('date'),
        excerpt:    DS.attr('string'),
        body:   DS.attr('string')
    });
我该如何声明author对象

在余烬检查器中,当我转到“数据”和“App.post”下并选择其中一行时。它有一个属性App.Post,属性author:{name:[Object]}

以下是从余烬文档中调整的JS Bin链接,如下所示:

App.Post = DS.Model.extend({
  title:  DS.attr('string'),
  author: DS.belongsTo('author'),
  date:   DS.attr('date'),
  excerpt:    DS.attr('string'),
  body:   DS.attr('string')
});

App.Author = DS.Model.extend({
  post: DS.belongsTo('post')
})

在没有余烬数据的情况下,余烬工作得非常好。让我们假设我们要使用余烬数据:

余烬数据的记录应该是平的。这意味着所有属性都位于顶层。如果你有一个相关的数据,它们通常存在于不同的记录中。如果您试图嵌入该记录,则需要查看嵌入记录的复杂世界()。至少这些相关记录必须定义一个id。下面是一个从服务器返回的数据的示例

  {
    posts:[
      {
        id: '1',
        title:  'My name is Django.',
        author: {
          id:1,
          name:   'D name'
        },
        date:   new Date('08-15-2014'),
        excerpt:    'The D is silent.',
        body:   'The D is silent.'
      }, 
      {
         id: '2',
         title:  'White horse',
         author: {
           id:2,
             name:   'horse name'
         },
         date:   new Date('08-15-2014'),
         excerpt:    'Is what I ride.',
         body:   'My horse likes to dance.'
     }
    ]
  }
代码 例如:

另一个小提示是,在处理路由时,您不想使用globals,您可以使用
modelFor
从不同的路由获取模型

App.PostsRoute = Ember.Route.extend({
    model: function() {
        return this.store.find('post');
    }
});

App.PostRoute = Ember.Route.extend({
    model: function(params) {
      var posts = this.modelFor('posts');
      return posts.findBy('id', params.post_id);
    }
});
就我个人而言,我认为余烬的数据是矫枉过正的。Ember与POJOs配合得非常好。如果您需要缓存和回滚功能,那么余烬数据可能是一个很好的解决方案


示例:

这并没有解决问题。您需要共享更多信息,比如jsbin演示问题或代码存储库。这个问题可能存在于代码的其他地方。你真的打算使用余烬数据吗?我只是想浏览一下教程。还有别的方法吗?
App.PostsRoute = Ember.Route.extend({
    model: function() {
        return this.store.find('post');
    }
});

App.PostRoute = Ember.Route.extend({
    model: function(params) {
      var posts = this.modelFor('posts');
      return posts.findBy('id', params.post_id);
    }
});