2016-12-01 68 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'引用,controller,vm還是service? – Aruna

+0

'這個'是指控制器。我試圖從'updateMap'調用控制器中定義的其他方法。 – lazyboy

+1

你可以直接在'updateMap'中使用'vm'。我沒有發現任何問題。你可以試試嗎? – Aruna

回答

1

如所討論的,可以直接使用作爲vm下面updateMap函數內。

(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) 
      }); 
     } 
    } 
})();