如何重定向到模板,从Ember中的JSON请求重新加载页面内容

如何重定向到模板,从Ember中的JSON请求重新加载页面内容,json,ember.js,getjson,ember-router,Json,Ember.js,Getjson,Ember Router,我希望转换到模板,但通过JSON请求重新加载页面内容 换句话说,我首先通过getJSON请求加载索引模板,然后转到另一个模板,在那里修改一些数据。稍后,我想使用相同的getJSON请求通过操作处理程序返回初始模板(它将返回和第一个不同的另一个数据) App.IndexRoute=Ember.Route.extend({ 模型:函数(){ 返回$.getJSON(“myurl”); }, 行动:{ goto:function(){ $.getJSON(“myurl”); 这个。转换到(‘索引’);

我希望转换到模板,但通过JSON请求重新加载页面内容

换句话说,我首先通过
getJSON
请求加载索引模板,然后转到另一个模板,在那里修改一些数据。稍后,我想使用相同的
getJSON
请求通过操作处理程序返回初始模板(它将返回和第一个不同的另一个数据)

App.IndexRoute=Ember.Route.extend({
模型:函数(){
返回$.getJSON(“myurl”);
},
行动:{
goto:function(){
$.getJSON(“myurl”);
这个。转换到(‘索引’);
}
}
});
我可以转换到我的模板并执行新的JSON请求,但我看到的数据是初始数据。这仅在我单击
F5
时有效,因为ember使用来自model函数的第一个
getJSON
调用呈现模板

编辑:

我已经找到了一个解决方案,但我想知道是否还有更好的解决方案,而无需重新加载页面

App.IndexRoute=Ember.Route.extend({
模型:函数(){
返回$.getJSON(“myurl”);
},
行动:{
goto:function(){
this.transitiono('index')。然后(function(){location.reload(true)});
}
}
});
提前感谢

你能测试一下吗

App.IndexRoute = Ember.Route.extend({
    model: function() {
        return $.getJSON("myurl");
    },
    actions: {
        goto: function(){
            var newModel = $.getJSON("myurl"),
            that = this;
            newModel.then(function(model){
                that.transitionTo('index',model);
            });
        }
    }
});

也许您可以使用控制器并手动设置模型,然后使用函数this.controllerFor('index').set('model',model)

这接近正确答案

如果路线已渲染到显示,则Ember将取消转换,因此

this.transitionTo('index');
不是真的开火。这就是你的问题所在。(可能值得为您的应用程序打开ember debug,以将状态转换输出到控制台,这将显示此转换正在终止)

如果您确实希望在路由中修改模型,我将直接在该路由控制器的操作处理程序中进行修改:

App.IndexController = Ember.ObjectController.extend({
    actions: {
        goto: function(){
            this.set('model', $.getJSON('myurl'));
        }
    }
});

错误
对象没有我用
that=this
that解决的方法“transitiono”
。transitiono
获取另一个错误<代码>传递的上下文对象比路由的动态段多。我用该变量编辑了答案,抱歉。对$.getJSON(“myurl”)的响应如何;这个JSON响应没有关联的模型,但它看起来像
[{“attr1”{“id”:“val1”,“attr2”:“val2”},“attr3”:val3},{“attr1”{“id”:“val1”,“attr2”:“val2”},“attr3”:val3}
。也许您可以在
中使用控制器并手动设置模型,然后在
函数This.controllerFor('index')。set('model',model)你的确切意思是什么?;)顺便说一句,我标准化了JSON响应,现在我没有收到任何错误,尽管我的模板仍然呈现初始数据,而不是新数据。我已经解决了这个问题,但谢谢你的回答!