調用函數時出現Cannot read property of undefined
錯誤,但數據正在正確顯示。在AngularJS中加載異步數據
根據我目前閱讀的內容,這是因爲AngularJS所做的數據異步加載,我應該使用承諾來避免這種情況。
我在網上搜索和Angular的文檔,但我不明白如何使用它。
如果有人能幫助我,我將不勝感激。
目前,我有以下代碼:
.factory('Test', ['$resource', function ($resource) {
return $resource('data.json');
}])
.controller('MyCtrl', ['$scope', 'Test', function($scope, Test) {
Test.get(function (data) {
$scope.myData = data;
});
$scope.myFunction = function() {
var min = $scope.myData.min;
var max = $scope.myData.max;
var diff = max - min;
return diff;
}
}])
這裏有一個Plunker:http://plnkr.co/edit/3AK70uVbNSdhAIIfdkHb?p=preview
這是一個很好的解決方案,謝謝! :) – superjim
我只是在想:如果我想爲函數傳遞一個值(例如'{{myData(2)}}',其中'2'將會是'min',那麼我不會是能夠使用你的第二種方法,對嗎? – superjim
然後,你將無法使用它,但是,我不會推薦使用這樣的函數,函數將被調用很多次,可能會有性能問題。最好設置scope屬性並在myFunction中使用它。 – dfsq