2014-11-14 39 views

回答

1

這裏是一個工作示例: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。

+0

感謝您的詳細解釋! – Rudi 2014-11-19 19:47:00