如何只从具有promise的函数返回我的数组的对象?

时间:2015-07-28 09:24:30

标签: javascript angularjs promise

我希望res中的数据传递给我的notes变量。但它正在返回一个更大的嵌套对象。为什么会这样? 如果我在控制台中检查cleanArrayOfNotes的值,我得到了我想要的对象,但是一旦将它分配给注释,它就变成了一个更大的对象。我理解这是Promises的本质的一部分,目前我还在努力理解。有帮助吗?

notes_service.js

$date = '$07/23/2015 12:38:23 PM EDT';

navCtrl.js

var notesService = {notesObjectInService: [], newNote: null};


    notesService.getAll = function() {
        return $http.get('/notes.json').success(function(data){
            //console.log(data)
            angular.copy(data, notesService.notesObjectInService);
            //console.log(notesService)
        })
    };

enter image description here

1 个答案:

答案 0 :(得分:0)

这应该适合你:

notes_service.js

app.factory ('NoteService', function($http) {
    return {
        getAll: function() {
            return $http.get('/notes.json').then(function(response) {
                  return response.data;
            });
        }
    }
});

navCtrl.js

    NotesService.getAll().then(function(res){

        $scope.cleanArrayOfNotes = res.data;

    });

或者,如果您想要返回结果而不是承诺,您可以:

notes_service.js

app.factory ('NoteService', function($http) {
    var notes = [];
    var promise = $http.get('/notes.json').then(function(response) {
          angular.copy(response.data, notes);
          return notes;
    });    

    return {
        getAll: function() {
            return notes; 
        },
        promise: promise
    }
});

navCtrl.js

     // get array of notes
     scope.cleanArrayOfNotes = NotesService.getAll();

     // or use promise
     NoteService.promise.then(function(response) {
         scope.cleanArrayOfNotes = response.data;
     });