2012-09-20 28 views
0

我想通過谷歌jsapi將XML feed送入我的應用程序,並且我變得如此接近,但恰恰在這個錯誤的頭部撞擊階段。使用ember.js通過谷歌載入RSS/XML feed jsapi

未捕獲錯誤:無法對不在DOM中的Metamorph執行操作。

的問題是這一行:me.pushObject(t);

如何從該函數內訪問父範圍是什麼?我接近這個錯誤,是否有完全不同的方式來做到這一點?

我可以確認我正在獲取XML,但我無法將其從該函數中解壓回來。

無奈之下,我試過App.myController.pushObject(t);等很多滑稽的解決方案。

我用JSON進行測試,它可以100%的工作,但我必須加載一個XML RSS,所以沒有了。

這是問題的一個片段:

App.myController = Ember.ArrayController.create({ 
    content: [], 
    init: function(){ 
     me = this; 

     function feedLoaded(result) { 
      me.set('content', []); 
      if (!result.error) { 
       var mObj = []; 
       for (var i = 0; i < result.feed.entries.length; i++) { 
        var cData = result.feed.entries[i]; 
        var t = App.HospTime.create({ 
         title: cData.title, 
         name: cData.name, 
         date: cData.date 
        }); 
        me.pushObject(t); 
       } 
      } else { 
       alert(result.error); 
      } 
     } 

     var feed = new google.feeds.Feed("myrss_feed.xml"); 
     feed.load(feedLoaded); 
    } 
}) 

回答

0

我想你可以嘗試使用jQuery.proxy() [jQuery reference],看看有沒有什麼幫助。

所以,與其feed.load(feedLoaded);,你可以嘗試設置me隨着使用feed.load($.proxy(feedLoaded, me));feedLoaded上下文(本),做一套me = this內feedLoaded。

另外,不會me.set('content', []);也有上下文的問題嗎?也許我誤解了你的問題。

+0

感謝您的建議,我試了一下,但沒有去 – user1680391

1

如果我刪除整個功能function feedLoaded(result) {並用JSON調用它工作正常,並通過了JSON數據返回到控制器替換它。