2015-11-14 34 views
0

有了Views不推薦使用,我無法辨別模板渲染後運行jQuery的位置。在ember模板呈現後運行jQuery的位置?

我有一個食品資源的簡單指數模板(模板/食品/ index.hbs),並希望index.hbs後運行下面的jQuery呈現:

this.$('[data-toggle="tooltip"]').tooltip(); 

我知道我們可以創建一個組件然後有一個didInsertElement掛鉤,但我不清楚如果我這樣做路由到組件。然後我會通過讓我的apps/templates/foods/index.hbs模板簡單地調用新的組件來「雙倍下降」,該組件將具有自己的模板,該模板將是原始的index.hbs模板?

我確定我在這裏錯過了一些簡單的東西。任何人都在意把我指向正確的方向?

回答

4

你可以調用的jQuery的路線:

export default Ember.Route.extend({ 
    actions: { 
    didTransition() { 
     Ember.run.next(this, 'initTooltip'); 
    } 
    }, 
    initTooltip() { 
    Ember.$('[data-toggle="tooltip"]').tooltip(); 
    } 
}); 

您還可以創建組件,並使用它你的模板裏面是這樣的:

{{tooltip-wrapper}} 
    <!-- HTML here --> 
{{/tooltip-wrapper}} 

並調用jQuery代碼在tooltip-wrapper組件的didInsertElement

+0

這樣的工作,但它似乎有點不可思議,必須調用Ember.run.next。在模板完成渲染時,是否真的沒有直接的「之後」類型回調?在標記爲已回答之前,要保持這一點,以確定是否有更傳統的方式。 – kjb

+0

現在有一個didRender鉤子。 –

+0

@ChristopherMilne我在挖掘過程中發現了組件上的掛鉤,但是我仍然不清楚如何使用組件作爲索引路由之類的正確方法。我在問題中提到的「雙重傾斜」策略是否正確? – kjb