我正在尝试通过google jsapi将XML Feed添加到我的应用程序中,并且我非常接近但只是处于这个错误的头部敲击阶段。
未捕获错误:无法对不在DOM中的Metamorph执行操作。
问题在于这一行:me.pushObject(t);
如何从该功能中访问父作用域?我接近这个错误,有没有完全不同的方法呢?
我可以确认我正在获取XML,我只是无法将其从函数中恢复为ember。
绝望之下,我尝试了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 :(得分:1)
如果我删除整个函数function feedLoaded(result) {
并将其替换为 jSON 调用,则它可以正常工作并将 jSON 数据传递回控制器。
答案 1 :(得分:0)
我认为您可以尝试使用jQuery.proxy() [jQuery reference],看看是否有帮助。
因此,您可以尝试使用feed.load(feedLoaded);
设置me
作为feedLoaded
的上下文(而不是feed.load($.proxy(feedLoaded, me));
,而不是me = this
,而在内部执行另一个me.set('content', []);
feedLoaded。
另外,{{1}}也不会有上下文问题吗?也许我误解了你的问题。