我使用pnotify錯誤和成功對話框沒有任何問題,但提示對話框不想顯示。我收到一個Uncaught TypeError: Cannot read property 'addClass' of undefined
錯誤。pnotify提示對話框不顯示在餘燼項目
有沒有人成功地讓這個工作?
jsbin:pnotify with ember
我使用pnotify錯誤和成功對話框沒有任何問題,但提示對話框不想顯示。我收到一個Uncaught TypeError: Cannot read property 'addClass' of undefined
錯誤。pnotify提示對話框不顯示在餘燼項目
有沒有人成功地讓這個工作?
jsbin:pnotify with ember
這裏是一個工作示例:http://jsbin.com/fuqoke/1/
那麼是什麼問題。那麼,Ember使用原型擴展。這種方法在不實現它們的瀏覽器中填充ECMAScript 5數組方法,爲內置數組添加便利方法和屬性,並使數組突變可觀察。問題是,pnotify希望與正常的oldschool JavaScript數組一起工作。例如,這代碼段它要遍歷的數組:
...
for (var i in options.buttons) {
btn = options.buttons[i];
...
此循環也將遍歷由灰燼添加到陣列中的方法(例如addObjects,firstObject,....)
所以2種方法來解決這個問題:
1)你修改pnotify代碼,並有利於它;),具有更穩健的實現來循環陣列
...
for (var i = 0; i < options.buttons.length; i++) {
btn = options.buttons[i];
...
或
...
for (var i in options.buttons) {
if(options.buttons.hasOwnProperty(i)){
btn = options.buttons[i];
...
2)您禁用了Ember的原型擴展,我不建議使用。在這裏你可以找到更多的信息:http://emberjs.com/guides/configuring-ember/disabling-prototype-extensions/但它會給你帶來很多麻煩。
簡而言之,它肯定是pnotify中的一個bug。
感謝您的詳細解釋! – Rudi 2014-11-19 19:47:00