我目前正在开发一个ember应用程序。
目前我正在尝试访问在组件js文件中的路由中设置的属性。
整体是从路径内的Facebook Graph API(作为某种模型)获取数据,而不是访问组件内的这些数据以在地图上绘制点。
我的模板如下所示:
// map.hbs
{{map-widget posts=posts}}
我的路线如下:
// routes/world.js
import Ember from 'ember';
import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';
export default Ember.Route.extend(AuthenticatedRouteMixin, {
fetchAllGeotaggedPosts() {
return new Promise((resolve, reject) => {
let postsArr = [];
function recursiveAPICall(apiURL) {
FB.api(apiURL, response => {
if (response && response.data) {
// Add response to posts array (merge arrays), check if there is more data
postsArr = postsArr.concat(response.data);
if (response.paging && response.paging.previous) {
recursiveAPICall(response.paging.previous);
} else {
// console.log(postArr)
resolve(postsArr);
}
} else {
reject();
}
})
}
recursiveAPICall('/me/feed?fields=id,name,message,picture,place,with_tags&with=location');
})
},
beforeModel(transition) {
this._super(transition);
return this.fetchAllGeotaggedPosts().then(response => {
this.set('posts', response);
// console.log(this.get('posts'))
})
},
model: function() {
//console.log(this.get('posts'))
return this.get('posts'));
}
})
我的组件(我想访问该属性的位置)如下所示:
// components/world.js
didRender() {
console.log(this.get('posts'))
}
我的问题是组件内的帖子总是未定义的,这意味着它不会接收或无法访问该值。
我可以访问beforeModel和model hook中的post值,所以我确信promise会解决来自Facebook的帖子并且不会被拒绝。
我也尝试设置一个字符串值,导致未定义。
有人在我的代码中有解决方案或识别错误吗?
提前致谢。
答案 0 :(得分:3)
您正在将帖子传递给组件,但未定义帖子,您想要的是这个。
{{map-widget posts=model}}
您可以访问返回帖子的模型功能,但您无法访问帖子,因为它们无法在任何地方定义。