2012-09-20 23 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数据返回到控制器替换它。