Skip to content

Instantly share code, notes, and snippets.

@cfjedimaster
Created Aug 30, 2017
Embed
What would you like to do?
let bpApp = new Vue({
el:'#bpList',
data:{
filter:'',
blueprints:[]
},
created:function() {
fetch('./data.json')
.then(res => res.json())
.then(res => {
this.blueprints = res;
});
},
computed:{
filteredBlueprints: function() {
console.log(this.filter +' is filter');
return this.blueprints.filter(function(bp) {
//filter is ALWAYS undefine.
console.log('checking '+bp.title+' to the filter '+this.filter);
if(this.filter === '') return true;
if(bp.title.indexOf(this.filter) >= 0) return true;
return false;
});
}
},
methods:{
filterBP:function() {
console.log(this.filter);
}
}
});
@elpete
Copy link

elpete commented Aug 31, 2017

No arrow functions on the Vue instance. That means

new Vue( {
    created: () => {},
    methods: {
        someMethod: () => {}
    }
} );

Would cause problems because this would refer to the wrong context.

If you are not compiling, I think the best approach is to just var vm = this; at the top of the functions you use callbacks in.

@cfjedimaster
Copy link
Author

cfjedimaster commented Aug 31, 2017

I'll try to keep that in mind - thanks. Btw, this is my app - feel free to rip me a new one, but maybe wait for the blog post (so I don't have to keep checking here ;) - https://github.com/cfjedimaster/nomanssky. Specifically the client folder.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment