2015-07-28 3 views
0

Я новичок в angularJs, и я использую ionic для создания приложения. У меня есть сервис со следующим возвратом всех заметок, сделанных пользователем. Внизу:Как отфильтровать обещание с filterFilter в angularJs

// Promise-based API 
    return { 
     loadAllNotes: function() { 
     return deferredPromise.promise; 
     }, 
     query: function (params) { 
     deferredPromise.promise.then(function(data){ 
      //console.log(filterFilter(data.notes, params)); //CORRECT RESULT 
      return filterFilter(data.notes, params); 
     }); 
     } 
} 

я сделал функцию query(params), чтобы иметь возможность фильтровать результаты. Пройдя params. хотя когда i console.log() внутри функции возврата, как вы видите выше, я получаю желаемый результат. Но я не могу получить доступ к этому результату в моем контроллере.

function loadNotes(){ 
     vm.notes = [].concat(noteService.query({"lead_id":vm.lead.id})); //calling The service function 
     console.log(vm.notes); //logs [undefined] 
    } 

Я считаю, что есть кое-что, что мне не хватает в обработке обещаний. FilterFilter работает отлично, я просто не могу получить результат в моем контроллере. Есть идеи?

+1

вы возвращаете 'false' из вашего noteServvice.query – webduvet

+0

@webduvet, что вы имеете в виду ? Я возвращаю 'filterFilter (data.notes, params)' i 'console.log()' значение в возвращаемой функции, и он выводил то, что я хочу. я просто не получаю его в контроллере –

+0

@webduvet Я понимаю, что вы сейчас имеете в виду ... его слишком много php, которое заставило меня написать код :( –

ответ

0

Во-первых, вы должны вернуть само обещание в службе:

query: function (params) { 
    return deferredPromise.promise.then(function(data){ 
     return filterFilter(data.notes, params); 
    }); 
} 

, после чего

noteService.query({"lead_id":vm.lead.id}).then(function(r){ 
    vm.notes.push(r); 

    console.log(vm.notes); 
}); 
Смежные вопросы