Ну, я знаю, что javascript асинхронизируется. Поэтому, если я напишу свой код, как показано ниже, а затем я вызову его в контроллере, я получу '[]' в результате.
Но я получаю запрос http завершить его процесс, прежде чем делать что-либо еще. Или мои ионные приложения будут разбиты. Итак, как я могу это сделать?
var starter = angular.module('starter', ['ionic']);
starter.factory('AllEvent', function($http) {
var allEvent = [];
$http.get('/api/event/new').success(function(data) {
var allEvent = {
all: function() {
return data;
},
remove: function(Event) {
$data.splice(data.indexOf(Event), 1);
},
get: function(_id) {
for (var i = 0; i < data.length; i++) {
if (data[i]._id === _id) {
return data[i];
}
}
return null;
}
};
});
return allEvent;
});
PS этот код является модифицированным кодом из шаблона вкладок в ионном.
Почему вы используете ту же переменную, что и массив и объект?
var starter = angular.module('starter', ['ionic']);
starter.factory('AllEvent', function($http) {
return {
getNew : function(){
return $http.get('/api/event/new').success(function(data) {
return {
all: function() {
return data;
},
remove: function(Event) {
$data.splice(data.indexOf(Event), 1);
},
get: function(_id) {
for (var i = 0; i < data.length; i++) {
if (data[i]._id === _id) {
return data[i];
}
}
return null;
}
};
});
}
}
});
В контроллере
AllEvent.getNew().then(function(eventObj){
eventObj.all();
})
Надеюсь, это сработает.