0

我正在尝试通过 google jsapi 将 XML 提要输入我的应用程序,我离得如此之近,但正处于这个错误的头撞阶段。

未捕获的错误:无法对不在 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);
    }
})
4

2 回答 2

1

如果我删除这整个函数 function feedLoaded(result) {并将其替换为JSON调用,则它可以正常工作并将JSON数据传递回控制器。

于 2012-09-21T04:39:03.063 回答
0

我认为您可以尝试使用 jQuery.proxy() [jQuery 参考]看看是否有帮助。

因此,feed.load(feedLoaded);您可以尝试设置mefeedLoadedusing的上下文(this),而不是 ,然后在 feedLoaded 中feed.load($.proxy(feedLoaded, me));执行另一个操作。me = this

另外,me.set('content', []);上下文也不会有问题吗?也许我误解了你的问题。

于 2012-09-21T03:38:52.573 回答