2016-12-01 76 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) 
      }); 
     } 
    } 
})();