如何访问javascript文件中的组件属性?
我目前正在开发一个余烬应用程序 目前,我正在尝试访问一个属性,该属性是在components js文件内部的路由中设置的 总的来说,从路由内的Facebook Graph API获取数据(作为某种模型),然后访问组件内的数据在地图上绘制点 我的模板如下所示:如何访问javascript文件中的组件属性?,javascript,ember.js,Javascript,Ember.js,我目前正在开发一个余烬应用程序 目前,我正在尝试访问一个属性,该属性是在components js文件内部的路由中设置的 总的来说,从路由内的Facebook Graph API获取数据(作为某种模型),然后访问组件内的数据在地图上绘制点 我的模板如下所示: // map.hbs {{map-widget posts=posts}} // routes/world.js import Ember from 'ember'; import AuthenticatedRouteMixin from
// 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'))
}
我的路线如下所示:
// 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'))
}
我的组件(我想在其中访问属性)如下所示:
// 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'))
}
我的问题是post在组件中总是未定义的,这意味着它不接收或无法访问该值
我能够访问beforeModel和model钩子中的post值,因此我确信该承诺与Facebook的帖子一致,不会被拒绝
我还试图设置一个字符串值,这也会导致一个未定义的字符串
是否有人有解决方案或认识到我的代码中的错误
提前感谢。您正在向组件传递帖子,但是帖子没有定义,您想要的是这个。
{{map widget posts=model}
您可以访问返回POST的模型函数,但无法访问POST,因为它们没有在任何地方定义。您将POST传递给组件,但POST没有定义,您需要的是这样。
{{map widget posts=model}
您可以访问返回帖子的模型函数,但无法访问帖子,因为它们没有在任何地方定义