2012-08-02 47 views
1

Ember.js具有很好的將數據綁定到視圖,在視圖中設置觸發事件處理或使用路由器的機制。但我需要的是能夠處理已經創建的HTML代碼(由PHP,服務器端)觸發的事件。 讓我給你看一個簡單的例子。我有這樣的代碼:如何在Ember.js中將事件直接綁定到現有的HTML,而不使用任何類型的視圖?

<a id="login" href="#">Login</a>

我需要能夠路由/處理點擊此鏈接,使其進入我的灰燼應用。 我一直在尋找方法來做到這一點,但我找不到任何。

我該怎麼做?

回答

2

如果此鏈接是爲灰燼管理元素的子DOM元素裏面,那麼你可以使用action幫手:

<a id="login" href="#" {{action doSomeStuff}}>Login</a> 

doSomeStuff事件將被髮送到你的Ember.Router,其中有實現處理的撥款路線:

...: Ember.Route.extend({ 

    doSomeStuff: function (router) { 
    //... 
    } 
}), 

如果鏈接是你的應用程序的範圍之內,你可以使用JQuery註冊上的應用程序相關的內容處理程序:

$('a#login').click(function() { 
    App.router.transitionTo('the.route.path'); 
}); 

在Ember應用程序初始化時注入的App.router,您可以從任何地方訪問它。

但讓我說,從路由器外部過渡不是最佳做法。

最後但並非最不重要,您還可以將上下文傳遞給transitionTo調用。

+0

如果通過Ember託管元素,你的意思是一個Ember視圖,那麼不,這個鏈接不存在。我沒有任何Ember的意見。所以,如果你能在這裏進行更多細節,我會很高興。 – 2012-08-02 12:47:59

+0

所以你的意思是你有沒有UI的Ember應用程序?或者您是否希望將Ember應用程序作爲現有應用程序的一部分? – 2012-08-02 13:06:15

+0

我想將處理程序綁定到現有的html元素,這些元素就在那裏,來自服務器端php。我無法更好地解釋這一點。 – 2012-08-02 13:09:53

相關問題