在显示到ember.js中的页面之前修改模型上的属性

时间:2014-04-02 11:56:07

标签: javascript ember.js properties controller

在我的服务器端,我有一个产品模型,其中包含一个名为'image'的属性,它是带有扩展名的图像的名称,我正在使用ember app kit,我将我的图像放在公共/资产中文件夹,我想引用它与文件名,以便它正确显示页面上的图像。因此,在我对ember的正确认识中,我创建了一个数组控制器(因为我正在使用一组产品)并且我接受了该属性,并在前面引用该路径时返回了一个字符串。但是我没有在页面上显示任何内容,甚至没有显示损坏的图像。

我已将此控制器放在控制器中并将其命名为products.js

var ProductsController = Ember.ArrayController.extend({
assetPath: function() {
    alert(this.get('image'));
    return '../assets/' + this.get('image');
}.property('image')
});

export default ProductsController;

我的模板只是在模板中,名为products.hbs,看起来非常基本

{{#each}}
    <div class="item">
        <h2>{{name}}</h2>
        <p>{{price}}</p>
        <p>{{image}}</p>
    </div>
{{/each}}

首先,为什么在引用此属性时我没有得到任何东西?第二个是这样做的“余烬方式”还是应该在其他地方完成?

1 个答案:

答案 0 :(得分:0)

刚发现这个堆栈溢出(不知道为什么我第一次搜索时没有转动)

Inserting a Model Property into an Img Element URL in Ember

我忘了你也可以在模型上定义这些。

所以我就这样做了......

var Product = DS.Model.extend({
    ...
    image: DS.attr('string'),
    assetPath: function(){
        return "/assets/"+this.get('image');
    }.property('image')
});