0
関数がvueインスタンスの外側で使用され、マウントされたメソッドの内部で渡されると、なぜ 'vm'への参照が失われますか?'vm'オブジェクトがVueインスタンス外にあり、内部メソッド呼び出しが呼び出されましたundefined
https://jsfiddle.net/z9u39hgu/5/
var vm = new Vue({
el: '#app-4',
data: {
isLoading: true
},
mounted: function() {
hello();
}
});
function hello() {
console.log(JSON.stringify(vm));
//vm.isLoading = true;
setTimeout(function() {
console.log(JSON.stringify(vm, replacer));
//vm.isLoading = false;
})
}
//Extra code ignore
seen = [];
var replacer = function(key, value) {
if (value != null && typeof value == "object") {
if (seen.indexOf(value) >= 0) {
return;
}
seen.push(value);
}
return value;
};
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.3.4/vue.js"></script>
<div id="app-4">
<p v-if="isLoading">Vuejs loading...</p>
</div>
感謝。では、このコードを書くのに最高のVueの方法は何ですか?私はsetTimeoutを使う考えが嫌いです。 2回目の試行では、私はhello関数のパラメータとして 'this'を渡していましたが、エラーがありました。それをより良い方法で処理してはいけませんか? – guilima
おそらく 'hello()'関数をVueインスタンス内のメソッドにすることができます。次に 'vm'を割り当てる必要はなく、単に' this'を参照することもできます... https://v1.js.org/guide/events.html – emanek
ええ、私はそれをするか、 Vueインスタンスいずれにせよ、それは動作します。おそらく、私は自分の心を変えてそのようにする必要があります。 – guilima