2014-03-24 85 views
1

我注意到,當我在Ember中有{{action}}時,它會呈現爲data-ember-action =「SomeNumber」。我試着直接在HTML中使用data-ember-action,這也起作用。現在我想知道分配給特定操作處理程序的id是否可以分配給操作處理程序ID?其實我正在使用jQuery數據表插件來顯示一些數據。這些數據必須顯示爲鏈接,並在點擊鏈接時必須調用某個操作處理程序。如果我嘗試在代碼中使用{{action}},它會在html中呈現爲{{action}}。我想打電話給調用參數data.name開放的一個行動處理器如下面的代碼中在Ember.js中使用data-ember-action添加動作處理程序

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

一般在例如需要處理的onclick JS事件並將其委託給ember實體時,它是使用純JS從DOM訪問餘燼實體需要的情況下,一個方式,我發現有用的是有一個通用的函數返回一個ember view傳遞DOM元素和處理action.Something等,

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>'; 

基本上它基於你發佈的內容。

相關問題