这可能是一个微不足道的问题,但对于AngularJS新手来说,这是一个问题^_^
我最初试图实现的是(通过jQuery)使用ng-click指令动态插入标签。我搜索了一下,发现我必须获得AngularJS Injector,然后编译代码。所以这是最简单的注入器代码形式,对我来说不起作用,它有什么问题?
注#1:ngDirective的动态插入标记是在AngularJS范围之外完成的。
angular.module('simpleExample', [])
.run(
[ '$rootScope',
function ($rootScope) {
$rootScope.test = "Test";
}]);
console.log(angular.injector(['simpleExample']));
// console.log(angular.injector(['simpleExample']).$compile('<a href="" ng-click="someFunctionOnRootScope()">Text</a>'));
http://jsfiddle.net/Zx8hr/6/
ng
模块
angular.bootstrap
在使用时自动将ng
模块添加到依赖项中(手动或与ngApp
一起使用)$rootScope
/$compile
服务是ng
模块的一部分- 如果您想要这些服务,您需要使用
injector.invoke
- 您可能应该以更传统的方式使用angular
试试这个:
angular.module('simpleExample', ['ng']);
angular.injector(['simpleExample'])
.invoke(['$rootScope','$compile',
function($rootScope, $compile){
var elm = $compile('<a href="" ng-click="someFunctionOnRootScope()">Text</a>')($rootScope);
$rootScope.someFunctionOnRootScope = function(){
alert("Hello there!");
}
angular.element(document.body).append(elm);
}]);