我注意到,当我在Ember中有{{action}}时,它会被渲染为data-ember-action =" SomeNumber"。我尝试直接在HTML中使用data-ember-action,这也有效。现在我想找出分配给特定动作处理程序的id,我可以自己为动作处理程序分配一个ID吗?实际上我使用jquery datatables插件来显示一些数据。此数据必须显示为链接,并且在单击链接时必须调用某个操作处理程序。如果我尝试在代码中使用{{action}},则会在html中将其呈现为{{action}}。我想调用一个名为open的动作处理程序,参数data.name,如下面的代码所示
App.SearchView = Em.View.extend({
data: function(){
},
tagName:'table',
didInsertElement: function(){
var mod=this.get('controller').get('model');
var self=this;
this.$().dataTable( {
"bProcessing": false,
"bFilter": false,
"bInfo": false,
"aaData":mod,
"aoColumns": [
{ "mData": "name" }
],
"aoColumnDefs": [
{
"fnRender": function ( oObj ) {
var data=oObj.aData;
return '<br/><a {{action open data.name}}>' + data.name " </a>";
},
"aTargets": [0]
}
]
} );
} });
答案 0 :(得分:2)
我在另一个stackoverflow帖子上找到了这个问题的答案。 YUI with emberjs Datatable with ember dynamic link
答案 1 :(得分:0)
通常在需要使用纯js从DOM访问ember实体的情况下,例如当需要处理onclick
js事件并将其委托给ember
实体时,我有一种方法发现有用的是让一个泛型函数返回一个ember view
传递一个DOM元素并处理action.Something like,
function getView($el){
return Ember.View.views[$el.closest(".ember-view").attr("id")];
}
...
return '<br/><a href=# onclick="getView($(this)).get(\'controller\').send(\'open\','+ data.name+')">'+data.name+'</a>';
基本上它取决于您发布的内容。