AngularJS/ JS Как мне получить доступ к переменным вне моей функции?
Я пытаюсь получить доступ к переменной np, определенной из функционального блока; Тем не менее, я сталкиваюсь с некоторыми проблемами, когда я звоню this.items.push(plumbers)
, я получил TypeError: Cannot call method push of undefined
myApp.factory('np', function($resource, nearbyPlumbers){
var np = function(){
this.items = [];
this.busy = false;
this.limit = 5;
this.offset = 0;
};
np.prototype.nextPage = function(){
if (this.busy) return;
this.busy = true;
var temp;
nearbyPlumbers.nearby({lat: -37.746129599999996, lng: 144.9119861}, function(data){
angular.forEach(data, function(plumber){
alert('yay');
//this.items.push(plumber);
console.log(plumber);
console.log(this.items); // <--- This wont work. How do I access this.items
});
});
};
return np;
});
2 ответа
Решение
np.prototype.nextPage = function () {
if (this.busy) return;
this.busy = true;
var temp;
var that = this; // add this line
nearbyPlumbers.nearby({
lat: -37.746129599999996,
lng: 144.9119861
}, function (data) {
angular.forEach(data, function (plumber) {
that.items.push(plumber); //access using "that"
console.log(plumber);
console.log(that.items);
});
});
};
Мне действительно любопытно, почему вы используете this
, так как это будет по-другому this
в зависимости от того, из какой области осуществляется доступ к синглтону. Это объяснило бы ошибку, которую вы получаете.
Я настоятельно рекомендую прочесть о фабриках в Angular, а затем еще раз взглянуть на код. Документы по услугам - хорошее место для начала, и этот вопрос также хорош.