2016-11-30 11 views
7

コンポーネントが作成される前に、ローカルのjsonデータに対して非同期呼び出しを行っています。したがって、このコードは実際には正常に動作します:Vue 2.1 beforeCreateフックの呼び出しメソッドが機能していない

beforeCreate : function() { 
    var self = this; 
     fetch('/assets/data/radfaces.json') 
     .then(function(response) { return response.json() 
     .then(function(data) { self.users = data; }); 
     }) 
     .catch(function(error) { 
     console.log(error); 
     }); 
    }, 

は今、私はちょうどリファクタリングと別の方法にこれを移動したい:

beforeCreate : function() { 
    this.fetchUsers(); 
    }, 

    methods: { 
    fetchUsers: function() { 
     var self = this; 
     fetch('/assets/data/radfaces.json') 
     .then(function(response) { return response.json() 
     .then(function(data) { self.users = data; }); 
     }) 
     .catch(function(error) { 
     console.log(error); 
     }); 
    } 
    } 

そして今、すべてが働いて停止します。私はエラーを取得する:app.js:13 Uncaught TypeError: this.fetchUsers is not a function(…)

私はbeforeCreateフックでfetchUsersメソッドにアクセスできないのはなぜ?何が回避策ですか?

答えて

11

methodsはまだ初期化されていません。

created : function() { 
    this.fetchUsers(); 
    }, 

    methods: { 
    fetchUsers: function() { 
     var self = this; 
     fetch('/assets/data/radfaces.json') 
     .then(function(response) { return response.json() 
     .then(function(data) { self.users = data; }); 
     }) 
     .catch(function(error) { 
     console.log(error); 
     }); 
    } 
    } 
+0

をドキュメントに、私はこのことについて読むことができる場所を知っています:それは代わりにcreatedフックを使用するには、この周りの最も簡単な方法は? –

+1

はい、詳しくはこちらをご覧ください:https://vuejs.org/v2/api/#Options-Lifecycle-Hooks –

関連する問題