我是AngularJS的新手。 我創建了一個服務來檢索使用$ http.get的文件,但我無法弄清楚 如何控制何時執行服務功能。AngularJS服務功能執行順序
我的控制器的功能是注入服務。
頁面第一次加載時,首先調用服務函數。 相反,我希望在單擊按鈕後調用服務功能。
或者我可能不應該使用服務功能?
var app = angular.module("app", []);
app.controller("myCtrl", function($scope, $http, myService) {
$scope.searchValues = function() {
$scope.value = "search.json";
myService.setValue($scope.value);
console.log(" in searchValues " + $scope.value);
};
});
app.service("myService", function($http, $q) {
var deferred = $q.defer();
var value ;
this.setValue = function(valueSelected) {
console.log("in service: " + valueSelected);
value = valueSelected;
};
$http.get('http://juubaker.github.io/' + value).then(function(data) {
console.log("in service 2: " + value);
deferred.resolve(data);
});
this.getValue = function() {
return deferred.promise;
};
});
感謝
請看'ng-click'或者它是否在'ng-submit'形式。無論哪種方式使用服務都是合適的,只需要在事件觸發函數中包裝'myService.setValue()'方法 – charlietfl
感謝您的快速回復。實際上,在按鈕上,我使用ng-click並調用函數。但是,該服務在點擊按鈕之前已被調用。我不確定事件函數如何觸發服務函數調用。 – juubaker
這就是初始化的正常方式。如果這沒有發生,你將在你的控制器中得到未知提供者myService錯誤 – MaheshKumar