AngularJS - 将工厂注入指令的链接功能
Posted
技术标签:
【中文标题】AngularJS - 将工厂注入指令的链接功能【英文标题】:AngularJS - Injecting Factory into Directive's link function 【发布时间】:2014-05-08 08:28:28 【问题描述】:我有一个简单的代码:
define(['app'], function(app)
app.factory('factoryProvider', function()
return
name: 'my Name'
);
app.directive('myDiv',['factoryProvider', function(factoryProvider)
return
restrict: 'E',
replace: true,
templateUrl: 'link/to/template.html',
controller: function($scope)
,
link: function(scope, routeParams, location)
console.log(factoryProvider.name);
;
])
);
我希望能够在link
函数内访问myFactory
,但我不能!我也试过link: function(scope, routeParams, location, factoryProvider)
,但也没有用。为什么?
【问题讨论】:
【参考方案1】:它应该已经在链接函数中可用
app.factory('factoryProvider', function()
return
name: 'my Name'
);
app.directive('myDiv',['factoryProvider', function(factoryProvider)
return
restrict: 'E',
replace: true,
template: '<p>name</p>',
controller: function($scope)
,
link: function(scope)
scope.name=factoryProvider.name;
;
]);
【讨论】:
嗯,它是为我定义的,但是当我返回参数时,它说未定义。但是在控制器内部使用时,完全相同的方法返回参数。 它说找不到未定义的方法或该方法未定义?如果定义了 factoryProvider,它是什么? 否,返回值未定义。当我在链接中记录工厂时,它只显示一个构造函数。当我在控制器中记录它时,它也会显示所有方法。 呃 idk,也许“供应商”把你搞砸了,试着重命名你的工厂 哈哈,没有!我将其更改为 randomNameTest ,但仍然无法正常工作:p以上是关于AngularJS - 将工厂注入指令的链接功能的主要内容,如果未能解决你的问题,请参考以下文章