gpt4 book ai didi

javascript - Ember 使用 forEach() 访问模型数组

转载 作者:行者123 更新时间:2023-11-29 10:33:54 25 4
gpt4 key购买 nike

我在将 Ember 数据从 0.X 升级到 1.0.0-beta12 时遇到问题。我的 ember.js 版本是 1.7.1。在我的 Controller 中,我有一个方法 contentChanged(): 循环遍历我的模型:

this.get('model').forEach(function(story) {
mutableComments.pushObject(story);
});

自升级 ember-data 以来,this.get('model'); 的结构发生了变化,因此 forEach() 找不到我的数组。

更新前: Before

更新后:

After

内容最初是一个array[20],但现在它是一个具有内容属性array[20] 的类。我需要遍历这些项目,但当前代码不起作用。

我试过了。 this.get('model').toArray()但这返回了一个空数组。如何访问内容数组?

编辑:为了添加更多上下文,应用程序使用此代码循环访问故事对象并将它们放置在 currentStories 数组中。我们使用具有 feedSettings 的 Ember.Mixin 执行此操作,并在我们要创建提要的地方使用 Mixin。

    App.FeedRouteMixin = Ember.Mixin.create({
/* When using the FeedRouteMixin, create a feedSettings object in the
* route with any of the following properties. If a property is missing,
* it will take the default value expressed below.

feedSettings: {
mountPoint: [],
canCompose: true,
firstLoad: true,
ableToLoadMore: true,
hasNewStories: false,
complexFeed: true,
feedType: "course" // "course", "home", "profile" "announcement"
canAnnounce: false,
isAnnouncement: false,
content: [],
into: "user"
},*/
/**
* Renders the feed using the feedSettings
*/
renderFeed: function() {
var fs = this.get("feedSettings");
var feedController = this.controllerFor('feed');
feedController.set('mountPoint', fs.mountPoint);
feedController.set('canCompose', (typeof fs.canCompose != "undefined") ? fs.canCompose : true);
feedController.set('firstLoad', (typeof fs.firstLoad != "undefined") ? fs.firstLoad : true);
feedController.set('ableToLoadMore', (typeof fs.ableToLoadMore != "undefined") ? fs.ableToLoadMore : true);
feedController.set('hasNewStories', (typeof fs.hasNewStories != "undefined") ? fs.hasNewStories : false);
feedController.set('complexFeed', (typeof fs.complexFeed != "undefined") ? fs.complexFeed : true);
feedController.set('feedType', (typeof fs.feedType != "undefined") ? fs.feedType : "course");
feedController.set('is_announcement', (typeof fs.isAnnouncement != "undefined") ? fs.isAnnouncement : false);
feedController.set('content', fs.content);

this.render("feed", {
outlet: "feed",
into: fs.into,
controller: feedController
});
},
renderTemplate: function(controller, model){
this.render();
this.renderFeed();
}
});

这是我们使用mixin的地方:

App.HomeRoute = Ember.Route.extend(App.FeedRouteMixin, App.FlagMixin, {
feedSettings: {
into: "home",
feedType: "home"
},
setupController: function(controller, model) {
this.feedSettings.content = this.store.findAll('feedstory');
controller.set('model', model);
// console.log(model);
},
activate: function() {
App.set("title", "Welcome!");
}
});

最佳答案

这真的看起来像现在你有一个 PromiseArray,它既是 Promise 又是 Array。您是否尝试解决 Promise:

this.get('model').then(function(model) {
model.forEach(function(story) {
mutableComments.pushObject(story);
});
});

但是知道 then 将执行异步。

关于javascript - Ember 使用 forEach() 访问模型数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40003308/

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