2017-04-20 60 views
0

我廠:

(function() { 

'use strict'; 

angular 
.module('XXX') 
.factory('SearchService', SearchService); 

SearchService.$inject = ['$resource', 'ApiConstants']; 

function SearchService($resource, ApiConstants) { 
    this.setName = function(data){ 
    console.log(data); 
    }; 
} 
return { 
    setName : this, 
    query: $resource(url + dataM, { 
    searchId: '@_id' 
}, {}) 
} 
}()); 

我要回功能的setName & $資源將得到變量DATAM從的setName()。我怎樣才能做到這一點?

+0

首先,你在'searchController'中的注入不是相互依次的。修復 – tanmay

+0

PLZ的幫助,我不熟悉angularJS,我只是爲我的後端API修復了一些模塊。 –

回答

0

首先你需要在相同的順序

searchController.$inject = ['SearchService', 'CurrentUser', 'ApiConstants', '$log', 'Authentication', '$state', '$location','$scope']; 
function searchController(SearchService, CurrentUser, ApiConstants, $log, Authentication, $state, $location, $scope) { 

添加扶養的在工廠需要返回可用的功能

.factory('SearchService', SearchService); 

SearchService.$inject = []; 

function SearchService() { 
    return { 
     setName: setName 
    } 

    function setName(data) { 
     console.log(data); 
    }; 
} 

然後在控制器指定this到VAR變量

var vm = this 
vm.key = { 
     name: '' 
}; 

Demo

+0

謝謝,夥計。我正在檢查工廠的 –

+0

,'this.setName ...'仍然可以工作..雖然我同意這不是按照工廠的指導方針.. :) – tanmay

+0

@tanmay通常'this' '而不是工廠。因爲當我們調用'service'時,它會創建一個新的實例並將屬性賦給'this'。但在工廠中,它調用了同一個實例,所以不需要使用'this'。 –