2014-12-08 64 views
0

我有一個稱爲選取器的燼視圖,它負責檢測div上的click和mouseMove事件。這些事件在檢測到時將相應的呼叫發送到相應的控制器。這應該在我的Ember視圖或Ember控制器中進行嗎?

export default Ember.View.extend({ 
    templateName: 'picker', 
    click: function (event) { 
     this.get('controller').send('addColor', event); 
    }, 
    mouseMove: function (event) { 
     this.get('controller').send('updateColor', event); 
    } 
}); 

我的應用程序需要我使用事件對象的pageX屬性和pageY屬性執行一些邏輯,並且還確定使用div的屬性(偏移量,寬度,高度等)一些縮放因子。

該做什麼工作?它應該全部包含在視圖中,並且只是作爲參數傳遞給操作方法,或者我應該傳遞事件對象並使其成爲控制器的責任?我的直覺說前者...

+1

事等應該在視圖/組件中。 – 2014-12-08 04:41:29

回答

1

這聽起來像是它應該包裹在一個組件中。

您可以將mouseMoveclick事件處理程序包裝到組件中,並且控制器可以在這些事件觸發時傳入要調用的操作。例如,你可以有一個像

export default Ember.Component.extend({ 
    click: function (event) { 
     this.sendAction('click'); 
    }, 
    mouseMove: function (event) { 
     this.sendAction('mouseMove'); 
    } 
}); 

組件和模板,你會使用它像

<div> 
    {{#x-picker click="addColor" mouseMove="updateColor"}} 
    <span> Track mousemove and click in here </span> 
    {{/x-picker}} 
</div> 
具有顯示器,DOM,畫面做的,事件,大小,佈局
+0

Ember指南建議在需要複雜的用戶事件處理時使用視圖。使用這種方法有什麼好處? – drlaj 2014-12-08 16:14:54

+0

轉移到組件方法,它運作良好。謝謝。 – drlaj 2014-12-09 01:19:40

相關問題