gpt4 book ai didi

javascript - Ember.js 在使用 ModelFor ('' 时)与后退按钮一起无法加载数据

转载 作者:搜寻专家 更新时间:2023-11-01 04:09:16 27 4
gpt4 key购买 nike

我正在使用 Ember 数据和带有 Django 扩展的 RESTAdapter。

这是一个JSBin

我们的路线是这样设置的:

App.Router.map(function() {

this.resource('locations');
this.resource('location', {path:'locations/:location_id'}, function() {

this.resource('items', function() {
this.route('create');
});

this.resource('item', { path:'item/:item_id' }, function() {
this.route('edit');
});

});
});

App.LocationsRoute = Ember.Route.extend({
model: function () {
return this.get('store').find('location');
}
});


App.ItemsRoute = Ember.Route.extend({
model: function(){
//Get the model for the selected location and grab its item list.
//This will do a call to /locations/1/items
return this.modelFor('location').get('items');
}
});

现在,当我们导航到 locations/1/items 时,一切正常。向用户显示与 ID 为 1 的位置相关的项目列表。

当用户单击这些项目之一时,它会将 url 带到#/locations/1/item/1 并显示 ID 为 1 的项目的详细信息。

现在不起作用的是:

当我点击后退按钮时,#/locations/1/items 路由加载但它不再有它的数据并且没有对 api/locations/1/items 的 REST 调用发生。尽管当我们第一次导航到#/locations/1/items 时数据显示得很好。

这就像 Ember 说的“好吧,我们已经加载了数据,所以我们不需要再次调用 api”,但是数据不知何故没有显示在我们的模板中。

如果我将 ItemsRoute 模型更改为:

return this.get('store').find('item');

上面的场景工作得很好,但数据不是基于我们的位置。

我在使用 this.modelFor 时是否遗漏了什么?还是我的路线设置不正确?

如果您需要任何额外信息,请告诉我。

更新 1:

将模型函数更改为此后,我发现了一些新见解:

model: function(){
//Get the model for the selected location and grab its item list.
//This will do a call to /locations/1/items
var location = this.modelFor('location');
var items = location.get('items');
return items;
}

在第一次加载#/locations/1/items 时,location 变量保存位置模型,items 变量保存具有“content”属性、“isFulfilled: true”和其他一些内容的内容。

这可以正常工作并显示项目列表。当我点击一个特定的项目并到达#/locations/1/items/1 然后点击后退按钮。断点触发器和位置仍然使用位置模型正确填充。

但是 items 变量似乎只是一个 PromiseArray,我是否需要以某种方式等待 promise 实现,然后再返回此模型 Hook ?我以为 Ember 已经自动完成了这个?我想这意味着路线在 promise 履行之前正在加载,这就是为什么没有显示数据的原因?

因此我的列表没有正确填充。

最佳答案

我正在打电话,所以稍后我会更新更多信息,但问题是您的位置资源不是位置的子资源。因此,ember 说如果它不是该资源路径的一部分,为什么要浪费时间获取该路由。它只会命中位置路线,我敢打赌您没有用于获取单个位置的模型 Hook (至少基于上面的代码)。

关于javascript - Ember.js 在使用 ModelFor ('' 时)与后退按钮一起无法加载数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21322015/

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