我目前正在通过一系列值以编程方式定义一些指令(在此示例中为let params = NSMutableDictionary()
params.setObject(fullName.text!.lowercaseString, forKey: "username")
let result: AnyObject? = try! PFCloud.callFunction("checkUsername", withParameters: params as [NSObject : AnyObject])
)
directiveNames
我现在想在其他地方重用这个数组。
var directiveNames = ['foo', 'bar'];
directiveNames.forEach(function(name) {
angular
.module('myModule')
.directive(name, buildDirective(name));
});
function buildDirective(name) {
return function() {
return {
restrict: 'E',
template: '<p>' + name + '</p>'
};
};
}
问题是,我不知道如何将注入这个常量放到上面的代码片段中。我尝试将代码包装在angular
.module('myModule')
.constant('directiveNames', ['foo', 'bar']);
和module.config
块中,但这似乎不起作用。
这可能吗?如果是这样的话?
答案 0 :(得分:1)
作为免责声明,我真的不明白为什么你必须这样做,我绝对不同意。事实上,你正在走出Angular生命周期之外,并且基本上是对你的角度应用进行元编程。因此,您需要一个主要存在于Angular之外的解决方案。这里有适合你的东西:
window.MyDirectiveDefinitions = ['some', 'crazy', 'directives'];
然后:
angular.module('myApp')
.constant('directiveDefinitions', window.MyDirectiveDefinitions);
然后......:
angular.forEach(window.MyDirectiveDefinitions, function(directive) {
angular.module('myApp')
.directive(directive, function(Your, Services) {
// Define your directive.
});
});
希望有所帮助。
答案 1 :(得分:0)
鉴于您的代码,您可以将其作为新的javascript文件执行:
int8_t
然后你注入&#34; myConstants&#34;进入你的指令控制器并调用这样的值:
var app = angular.module("myModule");
app.constant("myConstants", {
"constant1": 1,
"constant2": "two"
});
答案 2 :(得分:0)
尝试以下方法:
var module = angular.module('myWorld', []);
module.constant('directiveName', ['foo', 'bar']);
var namesOfDirectives = module._invokeQueue.filter(function(a){
if (a[0] === '$provide' && a[1] === 'constant' && a[2][0] === 'directiveName'){
return a;
}
})[0][2][1];
console.log(namesOfDirectives);
请参阅http://taoofcode.net/studying-the-angular-injector-loading-modules/
... _invokeQueue使用熟悉的angular.module('myModule')控制器,angular.module('myModule')指令添加到模块中的每个服务。调用。队列中的每个项目都是一个包含三个元素的数组。第一个是将调用服务的提供程序,第二个是提供程序要使用的方法,第三个元素是传递给服务的任何参数的数组。 ..