2016-12-01 3 views
0

Deviceがデータを返し、コールバックメソッドにthisを渡したときにコールバックを呼び出す方法。エンティティがデータを返すときのコールバック

コントローラ

(function() { 
    'use strict'; 

    angular 
     .module('frontendApp') 
     .controller('DeviceController', DeviceController); 

    DeviceController.$inject = ['$scope', '$state', 'Device']; 

    function DeviceController ($scope, $state, Device) { 
     var vm = this; 

     vm.devices = []; 

     loadAll(); 

     function updateMap(flag){ 
     var self = this;//how to pass "this" from loadAll()? 
     // logic to update map 
     } 

     function loadAll() { 
      Device.query(function(result) { 
       vm.devices = result; 
       // Callback function here - updateMap(true) 
      }); 
     } 
    } 
})(); 

サービス

function Device ($resource, DateUtils) { 
    var resourceUrl = 'api/devices/:id'; 

    return $resource(resourceUrl, {}, { 
     'query': { method: 'GET', isArray: true}, 
     'update': { method:'PUT' } 
    }); 
} 
+1

「this」がコントローラ、VMまたはサービスを参照するとしたら、どんなことを説明できますか? – Aruna

+0

'this'はコントローラを参照します。私は 'updateMap'からコントローラに定義された他のメソッドを呼び出そうとしています。 – lazyboy

+1

'updateMap'の中で' vm'を直接使うことができます。私は何の問題も見つけません。試してみることはできますか? – Aruna

答えて

1

説明したように、あなたは以下のようにupdateMap関数内で直接vmを使用することができます。

(function() { 
    'use strict'; 

    angular 
     .module('frontendApp') 
     .controller('DeviceController', DeviceController); 

    DeviceController.$inject = ['$scope', '$state', 'Device']; 

    function DeviceController ($scope, $state, Device) { 
     var vm = this; 

     vm.devices = []; 

     loadAll(); 

     function updateMap(flag){ 
     console.log(vm.devices); 
     } 

     function loadAll() { 
      Device.query(function(result) { 
       vm.devices = result; 
       // Callback function here - updateMap(true) 
      }); 
     } 
    } 
})(); 
関連する問題