我有几个指令,在做完它们的事情后需要调用相同的函数。此函数需要访问主控制器作用域,但还需要修改DOM。这个函数应该如何声明,应该在哪里声明?
发布于 2013-02-14 01:36:31
你应该使用服务,服务可以访问$rootScope,尽管最好将DOM修改保持在指令级,但在某些情况下,你可以这样做。
angular.module("myModule", [])
.factory("MyService", function ($rootScope) {
return {
myFunction: function () { // do stuff here }
}
})
.directive("MyDirective", function (MyService) {
return {
link: function (scope, iElement, iAttrs) {
// try do keep dom modification here, you have access to MyService,
// let it do the algorithm and try to keep dom modification here.
// PS: you can also inject $rootScope to directives.
};
};
});发布于 2013-02-13 20:58:59
如果此函数需要访问Controller的作用域,我将使用指令中可访问的作用域,并将其作为param传递,如下所示:
var MyDirective = function() {
var linkFn = function(scope, element, attrs) {
callAwesomeFn(scope);
};
return {
link: linkFn
}
};现在,把它放在哪里呢?
如果这是实用程序函数,我会放入一些实用程序名称空间,如MyFunctions.callAwesomeFn()
https://stackoverflow.com/questions/14852963
复制相似问题