我是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