在Ember.js中访问包含有序内容的子函数/属性

Accessing child functions/properties with arranged content in Ember.js

本文关键字:子函数 属性 js Ember 访问 包含      更新时间:2023-09-26

我不知道该怎么做。基本上我有一个post控制器它有一个函数imageURL。这个函数只接受一个字符串(ex image_1.jpg),并在其前面加上根路径(ex images/image_1.png)。我遇到的问题是在父控制器中,我只想显示4个最近的帖子。所以问题是,我不能使用"imageURL"上安排的内容。以下是相关代码。

App.HomeController = Ember.ArrayController.extend({
    itemController: 'post',
    sortProperties: ['date'],
    sortAscending: false,
    topPosts: function(){
        var content = this.get('arrangedContent');
        if(content.length >= 4) content = content.splice(0, 3);
        return content;
    }.property('content')
});
App.PostController = Ember.Controller.extend({
    title: Ember.computed.alias('model.title'),
    body: Ember.computed.alias('model.body'),
    postDate: Ember.computed.alias('model.postDate'),
    imageName: Ember.computed.alias('model.imageName'),
    imageUrl: function(){
        var id = this.get('model.id');
        var postImageRoot = "images/posts/" + id + "/";
        var imageName = this.get('model.imageName');
        return postImageRoot + imageName;
    }.property('imageName')
});

App.Post = DS.Model.extend({
    authorId:   DS.attr('number'),
    author:     DS.belongsTo('author'),
    title:      DS.attr('string'),
    body:       DS.attr('string'),
    snippet:    DS.attr('string'),
    postDate:   DS.attr('date'),
    imageName:  DS.attr('string')
});

任何帮助将不胜感激!我已经找了一段时间了,还没有找到任何特别像这样的东西。使用数组代理会有帮助吗?还是我漏掉了什么简单的东西?

我将把imageUrl属性移动到模型:

App.Post = DS.Model.extend({
    ...
    imageName:  DS.attr('string'),
    imageUrl: Ember.computed('id', 'imageName', function() {
      var id = this.get('id');
      var postImageRoot = "images/posts/" + id + "/";
      var imageName = this.get('imageName');
      return postImageRoot + imageName;
    })
});
http://emberjs.jsbin.com/nohazilegi/1/