当前位置: 首页 > 面试题库 >

我可以在AngularJS的指令中注入服务吗?

关飞翼
2023-03-14
问题内容

我正在尝试将服务注入如下指令:

 var app = angular.module('app',[]);
 app.factory('myData', function(){
     return {
        name : "myName"
     }
 });
 app.directive('changeIt',function($compile, myData){
    return {
            restrict: 'C',
            link: function (scope, element, attrs) {
                scope.name = myData.name;
            }
        }
 });

但是,这给了我一个错误Unknown provider: myDataProvider。有人可以调查一下代码,并告诉我是否做错了什么?


问题答案:

您可以对指令进行注入,看起来就像在其他地方一样。

app.directive('changeIt', ['myData', function(myData){
    return {
        restrict: 'C',
        link: function (scope, element, attrs) {
            scope.name = myData.name;
        }
    }
 }]);


 类似资料:
  • 问题内容: 是否可以在angularJS中将一个服务注入到另一个服务中? 问题答案: 是。遵循angularjs中的常规注入规则。 感谢@simon。最好使用数组注入以避免最小化问题。

  • 问题内容: 我已经定义了这样的服务: 我希望仅为新用户实例化我的服务(即当user.createdAt>今天)。 因此,如果用户是老用户,有没有办法有条件地注入我的服务或至少销毁我的服务而没有任何副作用。 问题答案: 如果需要,您可以使用该服务动态获取可注射对象: 这是完整运行的演示:http : //jsbin.com/bemakemaja/1/edit 和文档:https : //docs.a

  • 问题内容: authService.getLoggedin()返回false或true取决于用户是否登录。然后,我想不允许他们进入网址,如果不允许的话。 但是我收到此错误:错误:[$ injector:modulerr]由于以下原因无法实例化模块WikiApp:[$ injector:unpr]未知提供程序:authService 问题答案: 在配置阶段,您只能要求提供程序($ routeProv

  • 问题内容: 我在 boostrap3 上遇到问题,它的 默认背景是:transparent!important; 打印设置。 我需要在我的Web应用程序中显示一个热图,并使其可打印。 我为此使用ng-style指令来动态计算所需的背景色。 简而言之,这是html部分 这是控制器部分 但是,由于bootstrap3使用 !important 关键字将所有背景设置为透明,因此无法打印这些背景。 这是b

  • 问题内容: 我写了一个AngularJS服务,我想对其进行单元测试。 我的app.js文件已注册: 我可以测试DI是否像这样工作: 这证明了可以通过DI框架创建服务,但是接下来我要对服务进行单元测试,这意味着要模拟注入的对象。 我该怎么做呢? 我试过将我的模拟对象放在模块中,例如 并将服务定义重写为: 但是后者似乎停止了DI所创建的所有服务。 有人知道我可以如何为单元测试模拟注入的服务吗? 谢谢

  • 大多数或所有核心hibernate配置属性都可以在启动属性文件中指定,以替代在hibernate.cfg.xml中指定映射。