如何使用Ember.js的动作Helper传递参数?

Pan*_*agi 19 javascript handlebars.js ember.js

我有一个项目列表:

  <ul>
    {{#each applications}}
      <li>
        <a {{bindAttr href="url"}} 
        {{action "appClicked" on="click"}}>                
           {{name}}
        </a>
      </li>
    {{/each}}
  </ul>
Run Code Online (Sandbox Code Playgroud)

点击它会调用appClicked该模板所属的视图方法.我想将一些信息(例如,应用程序的名称)传递给方法appClicked.像,{{action "appClicked(name)" on="click"}}.

有可能,怎么样?

lau*_*hub 17

显然,Ember现在已经发展,并且有能力将参数传递给动作:

{{action "functionName" parameter}}
Run Code Online (Sandbox Code Playgroud)

在你的情况下,那将是:

<a {{bindAttr href="url"}} 
   {{action "appClicked" name on='click'}}>                
       {{name}}
   </a>
Run Code Online (Sandbox Code Playgroud)

但是,您可以从模型中传递任何属性(如id)而不是名称.

有关更多信息,请参见http://emberjs.com/guides/templates/actions/.


Hao*_* Li 14

API表示您可以传递多个参数.

HTML和把手:

{{officename}} 
<button {{action "actionTest" "hello" "goodbye" officename}}>See parameters through action in the console</button>
Run Code Online (Sandbox Code Playgroud)

控制器:

actionTest: function(a, b, c){
   console.log(a);
   console.log(b);
   console.log(c);
},
Run Code Online (Sandbox Code Playgroud)

在这个jsbin中看到它的实际效果

  • 从Ember 1.0版本开始,这个JSBin不再运行.您可能想要更新它@HaoQu Li (2认同)

Roy*_*els 5

我正在考虑更多这方面的内容,因为你可以通过实际视图访问更多内容.但扎克,如果你能解释一下,如果这不是你想要的东西,你究竟要做什么呢?

http://jsfiddle.net/ud3323/4ysxQ/