繁体   English   中英

AngularJS服务功能执行顺序

[英]AngularJS service function execution order

我是AngularJS的新手。 我创建了一个服务来使用$ http.get检索文件,但是我不知道如何控制何时执行服务功能。

我的控制器的功能随服务一起注入。

首次加载页面时,首先调用服务功能。 相反,我希望在单击按钮后调用服务功能。

也许我不应该使用服务功能?

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

谢谢

您的服务看起来还不错。 只是不要像这样立即在控制器中调用myService.setValue方法。 而是创建一个通过ng-click运行的方法

app.controller("myCtrl", function($scope, $http,  myService) {
  $scope.updateValue = function(){
    myService.setValue($scope.value);
  }
});

和您的模板:

<input type="text" ng-model="value" />
<a ng-click="updateValue()">Save Value</a>

控制器方法内部的逻辑在初始化该控制器后立即运行,这就是您遇到此问题的原因。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM