AngularJS,将服务作为指令属性传递[undefined]

时间:2014-12-01 11:24:37

标签: angularjs angularjs-directive angularjs-scope

我是AngularJS的新手,我将服务作为属性传递给指令时遇到了麻烦,我认为之前我曾多次这样做,并且它有效但是这次我得到'undefined'作为返回值服务。

这是我的代码

directive.js

'use strict';

/*global d3:false */

angular.module('myApp')
  .directive('stogbars', function() {


    return {
      restrict: 'E',
      scope: {
        service: '=service'
      },
      template: '<div id="stogbars"></div>',
      link: function(scope) {

        scope.$watch(service.data,function(){
          //my treatment (scope.service ---> undefined)
        });
      }

    };
  });

html页面:

<div class="rgo-data-widget box-6">
  <div class="inner-box">
    <h3 class="inner-box-title">Title Goes Here</h3>
    <div class="box-module">
      <div class="stogbars-box">                    
          <stogbars service = theService></stogbars>
      </div><!-- stogbars -->
    </div><!-- box module -->
  </div><!-- inner box -->
</div><!-- widget -->

我无法发布服务代码,因为它是700行文件。谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

您是否尝试在HTML中删除空格:

 <stogbars service="theService"></stogbars>

答案 1 :(得分:0)

您是否在控制器中注入了该服务?

只有当相应的控制器在范围内具有该服务的引用时,您给定的html才会起作用。

首先,将服务注入您的控制器,然后尝试添加

$scope.theService = theService;

在您的控制器中。