javascript - Ember.js:数组中当前元素的计算属性

标签 javascript ember.js

所以,这就是我的模型的样子(由夹具数据表示):

var posts = [{
    id: 'b026324c6904b2a9',
    title: "My new front door",
    author: { name: "Matthieu" },
    date: new Date('2013-10-28T12:19:30.789'),
    status: 'new',
    hidden_message: "hidden1"
}, {
    id: '26ab0db90d72e28a',
    title: "Best pizza in town",
    author: { name: "Harry" },
    date: new Date('2013-10-28T12:19:30.789'),
    status: '',
    hidden_message: "hidden2"
}, {
    id: '6d7fce9fee471194',
    title: "Skateboard dreamland",
    author: { name: "Matthieu" },
    date: new Date('2013-10-28T12:19:30.789'),
    status: 'solved',
    hidden_message: "hidden3"
}, {
    id: '48a24b70a0b37653',
    title: "my house looks like a pumpkin",
    author: { name: "Harry" },
    date: new Date('2013-10-28T12:19:30.789'),
    status: '',
    hidden_message: "hidden4"
}];

我的路线:

App.IndexRoute = Ember.Route.extend({
    model: function() {
        return posts;
    }
});

并且,如果相应的帖子是新的,我希望能够在模板中显示特定的 HTML 片段;如果已解决,则显示不同的 HTML;如果状态为空白,则不显示任何内容。在我看来,最好的方法是使用 {{#if}} 帮助器,但这并不进行相等比较,它只能采用 bool 变量。所以,我想做这样的事情:

App.IndexController = Ember.ArrayController.extend({

    isNew: function(val) {

        if(this.get('currentitem.status') === 'new') {
            return true;
        }

        return false;

    }.property('isNew')

});

但我无法找到如何选择模板中当前由 {{#each}} 访问的项目。这是否可能,如果是,我该怎么做(或类似的事情)?

谢谢大家!

最佳答案

执行此操作的正确方法是创建一个 itemcontroller,它可以通过为集合中的每个项目提供一个 Controller 来帮助您。

App.IndexController = Ember.ArrayController.extend({
    itemController: "PostItem",
});

App.PostItemController = Ember.ObjectController.extend({
    isNew: function() {
        if(this.get('status') === 'new') {
            return true;
        }
        return false;
    }.property('status')
});

然后在 Handlebars 模板中,您只需在 {{#each}} 上下文中调用 {{isNew}} 即可。

我已经放置了一个工作 fiddle ,您可以在其中进行测试。

http://jsfiddle.net/LordDaimos/v8NR3/1/

关于javascript - Ember.js:数组中当前元素的计算属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19661679/

相关文章:

javascript - Node js优化回调函数和nodemailer?

c# - 如何从代码隐藏中触发 jQuery 函数?

javascript - 如何在 ember 中包含图表 js 注释?

ember.js - 如何设置 Ember Controller 属性

javascript - 2 条 SVG 路径的交集

javascript - 引导模式溢出问题

javascript - 使用文件加载器 outputPath 的 AOT 构建将 img 标签转换为字符串

ember.js - 调用 w/o params 的 createRecord 不会将对象添加到集合中

javascript - 当模板加载到 ember 中时,如何触发操作?

ember.js - EmberJS 在有效负载 JSONAPI 中嵌入了项目