Ember js:如何将参数传递给控制器​​计算属性

sta*_*ser 1 handlebars.js ember.js ember-cli

我使用带有把手模板的ember-cli用于我的ember js应用程序.我有要求将值从hanldebars模板传递给ember控制器的计算属性.是否有任何方式ember支持将把手模板中的参数或任何值传递给ember控制器的计算属性.谢谢

我想做点什么:

App.Person = Ember.Object.extend({

 hasPermission: function(value1, value2) {
 // setter
  if(value1 === value2){
    return "You are permitted";
  }else{
    return "You are not permitted";
  }

 }.property('hasPermission')
});
Run Code Online (Sandbox Code Playgroud)

并从车把模板:

{{ hasPermission value1 value2 }}
Run Code Online (Sandbox Code Playgroud)

喜欢它的东西

GJK*_*GJK 16

简短的回答是,你做不到.Ember中的计算属性不是函数.Ember有一些语法糖,使它们更容易使用函数声明,但它们不是函数.您可以将Ember中的计算属性看作Javascript中的计算属性:它们看起来像函数,但它们不是.您不能将参数传递给计算属性,因为它不是函数.

话虽这么说,我想你想要的是一个Handlebars助手.您可以从控制器传入属性并对其执行计算以获得结果.从你的例子:

Ember.Handlebars.helper('hasPermission', function(value1, value2) {
    if (value1 === value2) {
        return 'You are permitted';
    } else {
        return 'You are not permitted';
    }
});
Run Code Online (Sandbox Code Playgroud)

您可以在问题中使用该助手的具体方式:

{{hasPermission value1 value2}}
Run Code Online (Sandbox Code Playgroud)