如何使用angularjs指令的内置服务?

时间:2018-02-20 09:44:40

标签: javascript angularjs angularjs-directive angularjs-scope

我可以使用angularjs内置$location服务从网址获取一些 ID 。现在,我需要在页面加载时调用具有该ID的服务,然后需要以某种方式呈现响应。

我正在使用ng-init:

ng-init="uid=$location.path().substring($location.path().lastIndexOf('/') + 1); callToTheService(uid);"

当我执行时,这种方式ng-init无法调用内置服务,这就是我未定义的原因。我在AngularJS中缺少什么?我要以确切的方式配置它。

1 个答案:

答案 0 :(得分:1)

最好在控制器中初始化它。只需将其绑定到范围。然后注入您的服务并从中调用一个函数。这是一个例子:



var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope, $location, YourService) { // injections are important 
  $scope.uid = $location.path().substring($location.path().lastIndexOf('/') + 1);
  $scope.log = function() {
    YourService.callToTheService($scope.uid);
  }
});

app.service("YourService", function() {
  this.callToTheService = function(uid) {
    console.log("UID: ",uid); // empty in this case
  }
})

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>

<div ng-app="myApp" ng-controller="myCtrl">
  <button ng-click="log()">Log UID</button>
</div>
&#13;
&#13;
&#13;