【问题标题】:How to load an object from an id in an Ember View?如何从 Ember 视图中的 id 加载对象?
【发布时间】:2013-05-13 08:12:07
【问题描述】:

我正在尝试构建一个视图以根据他们的 ID 显示用户卡。所以理想情况下,我的呼叫把手应该是这样的:

<p>{{view App.UserThumb authorId}}
{{comment}}</p>

然后在我的 UserThumb 视图中,我希望能够以某种设置方法或模型功能加载模型,就像我使用控制器的方式一样:

App.UserThumb = Ember.View.extend({
  model: function(view, authorId) {
    User.find(authorId, function(user) { view.set('content', user); } );
  }
}

任何人都可以帮助我理解“正确”或至少是可行的方法吗?在最坏的情况下,我可以先创建对象,但我想先保留 id 一段时间,除非这与 Ember 的哲学完全不符。

【问题讨论】:

    标签: ember.js


    【解决方案1】:

    应该这样做

    {{#each id in listOfIds}}
      {{view App.UserThumb idBinding="id"}}
    {{/each}}
    
    App.UserThumb = Ember.View.extend({
      didInsertElement: function() {
        var authorId = this.get('id');
        User.find(authorId, function(user) { view.set('content', user); } );
      }
    }
    

    只有在插入视图后,didInsertElement 钩子才会被执行,从而获得所需的用户

    【讨论】:

    • 这看起来真的很棒 - 非常感谢。我将把它连接起来,我会让你知道它是怎么回事。
    【解决方案2】:

    您在视图中使用的model 挂钩仅在路线内可用。 model 钩子可用于为控制器设置模型。

    请参阅此处docs 了解更多信息。

    本着 DRY(不要重复自己)的精神,我想链接到这个伟大的 SO answer,这将有助于以 ember 方式设置功能性应用程序。

    希望对你有帮助

    【讨论】:

    • 我已经阅读了 ember 架构的一般概述,但它并没有回答我的问题。我正在寻找一种在模板中的每个块内加载项目视图的方法,其中数组是 id 列表,并且我想在呈现初始模板后延迟加载关联的数据对象。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多