簡體   English   中英

jQuery 在自定義 ember 的把手助手中不起作用

[英]jQuery doesn't work in a custom ember's handlebars helper

我剛剛跟別人學了寫一個helper來替換不同模板中的<title> ,然后我嘗試寫一個這樣的測試示例:

Ember.Handlebars.helper('headTitle', function (title) {
  Ember.$('head').find('title').text(title);
});

但這根本行不通。 我也嘗試使用console.log(Ember.$('head').find('title'))來查看它是否真的選擇了<title>標簽,但它沒有。 接下來真正奇怪的事情發生了:加載所有代碼后,我在瀏覽器的控制台中輸入Ember.$('head').find('title') ,現在它找到了標簽!

為什么 jQuery 在 Handlebars 助手中不起作用?

我把測試代碼放在jsfiddle中,請幫我解決這個問題,謝謝。

http://jsfiddle.net/nightire/8arRv/1/

更新:

對不起,伙計們,在我使用與初始值相同的值之前,我終於讓它工作了(按我的預期更改<title>內容),所以我看不到它們之間的區別。

您可以在以下位置檢查工作代碼: http : //jsfiddle.net/nightire/8arRv/2/

但是在這次體驗中,我還發現如果我為另一個預先存在的元素更改選擇器,它不會像上面那樣工作。 要查看這種奇怪的行為,請查看此版本: http : //jsfiddle.net/nightire/8arRv/3/

我唯一改變的是輔助函數中的選擇器,而不是尋找<title>現在我想找到一個帶有 id #title的元素。

我還是不明白為什么,希望有人能給出解釋。

說白了,像這樣將 DOM 操作代碼放在 Handlebars 助手中是一個糟糕的主意。 Handlebars 助手不是為了調用隨機函數,而是為了將數據插入到 DOM 中。 從技術上講,您甚至不知道該方法是如何或何時被調用的,因為它是一個實現細節(這可能是您的代碼無法按您期望的方式工作的原因)。

如果您想更改文檔標題,我建議您這樣 一個將document.title 集成到 Ember的拉取請求,但它尚未合並。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM