在没有任何交互的情况下调用操

时间:2015-02-16 04:18:55

标签: ember.js

是否可以在模板内没有交互的情况下调用控制器操作?

我想将数字转换为特定字符串,如下所示:

switch (s){
    case 1: return "foo";
    case 2: return "bar";
    // ...
}

我想在each循环=>中执行此操作对我的模型中的项目each,将属性s从每个项目转换为特定字符串。

好吧,我可能会在afterModel钩子中做到这一点 - 但我想从模板中做到这一点。

2 个答案:

答案 0 :(得分:1)

你需要的是一个绑定帮手。这可以让你的逻辑从字符串转换为你想要显示的字符串。

请参阅文档中的Register Bound Helper

Ember.Handlebars.registerBoundHelper('convertToMyString', function(s) {
    switch (s){
        case 1: return "foo";
        case 2: return "bar";
        // ...
    }
});

在你的模板中:

{{convertToMyStringname model.s}}

答案 1 :(得分:0)

不,你正在反对这个框架,而你所发现的就是困难。

在您的控制器中进行数据处理(装饰/格式化),并从那里将数据提供给您的模板。

模板只是演示文稿,不应该在那里执行逻辑(实际上尽可能少)。

App.IndexController = Ember.Controller.extend({
  processedData: function() {
    return // processed data;
  }.property('model')
});