Ember js在控制器内使用把手帮手?

Aje*_*jey 5 javascript handlebars.js ember.js

我有一个帮助方法,将数字映射到文本 -

Ember.Handlebars.helper('getStatusText', function (value, options) {
    switch(value) {
        case 1: return "Fresh";
            break;
        case 2: return "Callback";
            break;
        default: return "Unable to get Status";
    }
});
Run Code Online (Sandbox Code Playgroud)

我可以通过使用在视图中使用帮助器 {{getStatusText 1}}

但是如何在ObjectController内的动作中使用帮助器呢?

Test.DealController = Ember.ObjectController.extend({

    selectedStatusType: null,
    statusList: ["Fresh","Callback"],

    actions: {
        updateStatus: function(deal) {
// How do I call the handlebars helper here ?
            console.log({{getStatusText 1}});
        }
    },

});
Run Code Online (Sandbox Code Playgroud)

这显然不起作用.

还有什么其他方法?

为了更好地理解,这里是jsbin

Jan*_*Jan 27

使用ember-cli可以这样做:

// helpers/foo.js
export function foo(params) {
    return params;
}
export default Ember.Helper.helper(foo);
Run Code Online (Sandbox Code Playgroud)

Helper foo导出一个函数(包含辅助逻辑)和包装在Ember帮助器中的函数(用于模板).

// helpers/bar.js
import { foo } from '<project>/helpers/foo';
export function bar(params) {
    return foo(params);
}
export default Ember.Helper.helper(bar);
Run Code Online (Sandbox Code Playgroud)

Helper bar从中导入辅助函数,foo并在其自己的模板助手中使用它.


Kin*_*n2k 4

将逻辑从帮助器中拉出,使其可供帮助器和非车把帮助器项目调用。将其解析为车把模板并对其进行评估过于复杂。

你把它放在哪里取决于你,你可以将它命名为你的应用程序,或者只是将它创建为与你的助手一起使用的函数。

function getStatusText(value){
    switch(value) {
        case 1: return "Fresh";
            break;
        case 2: return "Callback";
            break;
        default: return "Unable to get Status";
    }
}

Ember.Handlebars.helper('getStatusText', function (value, options) {
  return getStatusText(value);
});
Run Code Online (Sandbox Code Playgroud)

http://emberjs.jsbin.com/cenep/1/edit