gpt4 book ai didi

javascript - 为什么在 Emberjs 中刷新结尾为 'id' 的 url 时会得到一个空白应用程序?

转载 作者:行者123 更新时间:2023-12-02 18:21:15 24 4
gpt4 key购买 nike

我有这样的嵌套路由,

App.Router.map(function() {
this.resource('twod', function() {
this.resource('twoduser', {
path : '/:user_id'
});
});
this.resource('threed');

});

我有一个由 {{link-to}} 生成的列表,每当我点击其中任何一个时,它都会向我显示“twoduser”的模板,这就是我想要的这样做,好的,它会像这样更新 url,

http://ember.local/#/twod/2

这是之前,

http://ankur.local/#/twod

每当我刷新网址时,页面就会变成空白,我会在控制台上看到此内容,

Error while loading route:
TypeError: App.Twod.findBy is not a function

这是twoduser 的路由方法:

App.TwoduserRoute = Ember.Route.extend({
model: function(params){
return App.Twod.findBy('id', params.user_id);
}
});

还有一件事需要注意,我正在使用 Ajax 获取数据,

App.Twod.reopenClass({
findAll : function() {
return new Ember.RSVP.Promise(function(resolve, reject) {
$.getJSON("http://pioneerdev.us/users/index", function(data) {
var result = data.users.map(function(row) {
return App.Twod.create(row);
});
resolve(result);
}).fail(reject);
});
}
});

我可以做什么来解决这个问题?

最佳答案

如果你想使用findBy函数,你必须定义它。它在您单击时起作用,但在您重新加载时不起作用的原因是,在您的 link-to 中,它隐式假定当前对象是新对象的 model路由,它只是直接传递到 Controller ,绕过 model 钩子(Hook)。当您点击重新加载时,将执行 model Hook ,但由于您尝试调用不存在的方法而失败。

如果您需要 findBy 函数,您应该在模型中的 findAll 方法旁边创建它。

App.Twod.reopenClass({
findAll : function() {
// your find all function here
},
findBy : function(id){
// your code to find by id here
}
});

关于javascript - 为什么在 Emberjs 中刷新结尾为 'id' 的 url 时会得到一个空白应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18806756/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com