我有一个项目列表:
<ul>
{{#each applications}}
<li>
<a {{bindAttr href="url"}}
{{action "appClicked" on="click"}}>
{{name}}
</a>
</li>
{{/each}}
</ul>
单击时,它将调用此模板所属的视图的方法appClicked
。我希望将一些信息(例如,应用程序的名称)传递给appClicked
方法。类似于,{{action "appClicked(name)" on="click"}}
。
这是可能的吗?如何实现?
发布于 2012-02-08 08:29:23
我在考虑更多类似的东西,因为您将可以通过实际视图访问更多内容。但是扎克,如果你能解释一下如果这不是你想要的,你到底想做什么?
App = Ember.Application.create();
App.peopleController = Ember.ArrayController.create({
content: [ { name: 'Roy', url: '#' },
{ name: 'Mike', url: '#' },
{ name: 'Lucy', url: '#' } ]
});
App.PersonView = Ember.View.extend({
tagName: 'li',
content: null,
linkClicked: function() {
console.log(this.getPath('content.name'));
}
});
<ul>
{{#each App.peopleController}}
{{#view App.PersonView contentBinding="this"}}
<a {{bindAttr href="content.url"}} {{action "linkClicked" on="click"}}>
{{content.name}}
</a>
{{/view}}
{{/each}}
</ul>
发布于 2013-08-14 20:29:13
显然,Ember现在已经进化了,并且有了向操作传递参数的能力:
{{action "functionName" parameter}}
在您的情况下,这将是:
<a {{bindAttr href="url"}}
{{action "appClicked" name on='click'}}>
{{name}}
</a>
但是,您可以传递模型中的任何属性(如id),而不是名称。
有关详细信息,请参阅http://emberjs.com/guides/templates/actions/。
发布于 2013-08-28 03:25:51
The API says您可以传入多个参数。
html和把手:
{{officename}}
<button {{action "actionTest" "hello" "goodbye" officename}}>See parameters through action in the console</button>
控制器:
actionTest: function(a, b, c){
console.log(a);
console.log(b);
console.log(c);
},
https://stackoverflow.com/questions/9180366
复制相似问题