Javascript 在Vue';无法设置属性';数据';未定义的';
我刚开始用公共Flickr流制作一个简单的单页照片蒸汽应用程序,但根据我目前所做的,我得到了一个错误 '无法设置未定义的属性'data' 我的代码:Javascript 在Vue';无法设置属性';数据';未定义的';,javascript,vue.js,vuejs2,jsonp,Javascript,Vue.js,Vuejs2,Jsonp,我刚开始用公共Flickr流制作一个简单的单页照片蒸汽应用程序,但根据我目前所做的,我得到了一个错误 '无法设置未定义的属性'data' 我的代码: <b-container> <b-row> <b-col> <p md="4" v-for="photo in Photos">{{photo.id}}</p> </b-col> </b-row> </
<b-container>
<b-row>
<b-col>
<p md="4" v-for="photo in Photos">{{photo.id}}</p>
</b-col>
</b-row>
</b-container>
</template>
<script>
import jsonp from "jsonp";
export default {
name: 'PhotoFeed',
data: function() {
return {
Photos: [],
apiURL: "https://api.flickr.com/services/feeds/photos_public.gne?format=json"
}
},
mounted(){
this.getFlickrFeed();
},
methods: {
getFlickrFeed(){
let jsonp = require('jsonp');
jsonp(this.apiURL, {name:'jsonFlickrFeed'}, function(err,data) {
this.data = data;
var self = this;
if (err){
console.log(err.message);
}
else {
this.Photos = self.data;
}
});
}
}
}
</script>
{{photo.id}
从“jsonp”导入jsonp;
导出默认值{
名称:'PhotoFeed',
数据:函数(){
返回{
照片:[],
apiURL:“https://api.flickr.com/services/feeds/photos_public.gne?format=json"
}
},
安装的(){
这是.getFlickrFeed();
},
方法:{
getFlickrFeed(){
让jsonp=require('jsonp');
jsonp(this.apirl,{name:'jsonFlickrFeed'},函数(err,data){
这个数据=数据;
var self=这个;
如果(错误){
控制台日志(错误消息);
}
否则{
this.Photos=self.data;
}
});
}
}
}
您希望var self=this
在匿名函数定义之外,这样这个
关键字就不会被新函数遮挡
getFlickrFeed () {
let jsonp = require('jsonp');
var self = this; // now self refers to the vue component and can
// access the Photos property in data
jsonp(this.apiURL, { name:'jsonFlickrFeed' }, function (err,data) {
if (err){
console.log(err.message);
}
else {
// also use self.Photos to refer to the Vue component
self.Photos = data;
}
});
}
最简单的方法是使用箭头函数而不是匿名函数:
jsonp(this.apiURL, { name:'jsonFlickrFeed' }, (err, data) => {
if (err) {
console.log(err.message);
}
else {
this.Photos = data;
}
})
您希望
var self=this
在匿名函数定义之外,这样this
关键字就不会被新函数遮挡
getFlickrFeed () {
let jsonp = require('jsonp');
var self = this; // now self refers to the vue component and can
// access the Photos property in data
jsonp(this.apiURL, { name:'jsonFlickrFeed' }, function (err,data) {
if (err){
console.log(err.message);
}
else {
// also use self.Photos to refer to the Vue component
self.Photos = data;
}
});
}
最简单的方法是使用箭头函数而不是匿名函数:
jsonp(this.apiURL, { name:'jsonFlickrFeed' }, (err, data) => {
if (err) {
console.log(err.message);
}
else {
this.Photos = data;
}
})
您可以使用箭头函数
()=>
,并在回调上下文中使用this
,如下所示:
jsonp(this.apiURL, {name:'jsonFlickrFeed'}, (err,data)=> {
this.data = data;
if (err){
console.log(err.message);
}
else {
this.Photos = this.data;
}
});
您可以使用箭头函数
()=>
,并在回调上下文中使用this
,如下所示:
jsonp(this.apiURL, {name:'jsonFlickrFeed'}, (err,data)=> {
this.data = data;
if (err){
console.log(err.message);
}
else {
this.Photos = this.data;
}
});