指令可以参考服务信息吗?

时间:2015-04-03 20:30:17

标签: angularjs angularjs-directive

我有以下服务:

 myapp.service('myService', function () {

      var familyList = this;
      familyList.people = [
        { name: 'Jax', dob: '01/01/1974', cell: '3035551212', carrier: 'ATT', email: 'jax@soa.com', active: true },
        { name: 'Tara', dob: '03/01/1974', cell: '3035551313', carrier: 'SPRINT', email: 'tara@soa.com', active: false }];

 });

我有以下指令:

  myapp.directive('applyplugin', function () {
      return {
          link: function ($scope, myService) {
              $scope.myService = myService;
              alert(myService.people.length);
              $("select[id^='ms']").each(function () {
                  $(option).remove();
              });
          }
      }
  });

我可以从指令中引用familyList数组吗?

1 个答案:

答案 0 :(得分:1)

当然,但是服务(依赖关系)注入不会发生在link函数中,而是在一个definig指令中。

代码变为:

myapp.directive('applyplugin', function (myService) {
    return {
        link: function ($scope) {
            $scope.myService = myService;
            alert(myService.people.length);
            $("select[id^='ms']").each(function () {
                $(option).remove();
            });
        }
    }
});

你不能在link函数中注入任何东西,它的签名是固定的并且是link(scope, element, attributes, ...requiredDirectives) {... }(你大部分时间都不会使用最后一个参数,它适用于指令需要使用的时候另一个使用^someDir语法)

注意:您可能希望在链接函数中使用此element参数仅影响指令中的元素:element.find("select[id^='ms']").each( ... )