Ember.js 对于带有动态段的模型,使用ajax加载的最佳方法是什么

Ember.js 对于带有动态段的模型,使用ajax加载的最佳方法是什么,ember.js,Ember.js,我面临着动态段路由器v2的问题。 这里是js“”的链接 route的model方法没有使用linkTo和transitiono调用。(在恩伯的文件中有明确说明)。 但对于我的情况,我确实需要在路由中加载来自ajax请求的数据 谢谢, Linn模型挂钩上的余烬文档: “您可以实现一个钩子,将URL转换为此应用程序的模型 路线。” 所以模型钩子只是在页面刷新时调用的。但这让很多人感到困惑:-)。所以,在这种情况下,这不是正确的钩子。我认为你应该在这个案例中使用setupController钩子。试试

我面临着动态段路由器v2的问题。 这里是js“”的链接

route的model方法没有使用linkTo和transitiono调用。(在恩伯的文件中有明确说明)。 但对于我的情况,我确实需要在路由中加载来自ajax请求的数据

谢谢,
Linn

模型挂钩上的余烬文档:

“您可以实现一个钩子,将URL转换为此应用程序的模型 路线。”

所以模型钩子只是在页面刷新时调用的。但这让很多人感到困惑:-)。所以,在这种情况下,这不是正确的钩子。我认为你应该在这个案例中使用setupController钩子。试试这个:

App.CampaignsRoute = Ember.Route.extend({
    setupController: function(controller) {
        alert('called setupController method');
        var data;
        $.ajax({
            url: '/echo/json/',
            async: false,
            data: {
                json: JSON.encode([{
                   name: 'Campaign 1',
                   type: 'scheduled'
                }, {
                   name: 'Campaign 2',
                   type: 'scheduled'
                }, {
                   name: 'Campaign 2',
                   type: 'draft'
                }])
            },
            dataType: 'json', 
            success: function(json) {
                alert(JSON.stringify(json));
                data = json;
            }
        });
        controller.set("model",data);
    }
});

另加一句话:不将对象包装在Ember.Object中似乎有些尴尬。通常情况下,您不会处理普通的JS对象。

谢谢您的回答。我的代码不完整,缺少控制器。在这种情况下,我使用ArrayController。所以我还有一个关于transitiono和{{linkTo}的问题。根据ember doc,我需要传递真实对象,而不是route的参数。但根据我的要求,我确实需要执行ajax查询来根据类型进行检索。似乎无法使用这种方法。
App.CampaignsRoute = Ember.Route.extend({
    setupController: function(controller) {
        alert('called setupController method');
        var data;
        $.ajax({
            url: '/echo/json/',
            async: false,
            data: {
                json: JSON.encode([{
                   name: 'Campaign 1',
                   type: 'scheduled'
                }, {
                   name: 'Campaign 2',
                   type: 'scheduled'
                }, {
                   name: 'Campaign 2',
                   type: 'draft'
                }])
            },
            dataType: 'json', 
            success: function(json) {
                alert(JSON.stringify(json));
                data = json;
            }
        });
        controller.set("model",data);
    }
});