我正在尝试学习AngularJS,我正在尝试动态编译一些DOM元素...... 我试过了这个演示:
try {
var templateHTML = angular.element('<p>{{total}}</p>'),
scope = ....;
var clonedElement = $compile(templateHTML)(scope, function(clonedElement, scope) {
//attach the clone to DOM document at the right place
});
//now we have reference to the cloned DOM via `clone`
} catch (ex) {
alert(ex.message);
}
但我得到的只是“$ compile is not defined”
HELP!
答案 0 :(得分:8)
在指令中使用$ compile的示例代码。基本上是继续&amp;首先将元素附加到DOM(可能希望保持不可见),然后使用finder运行编译..如rtcherry所述,应该注入$ compile。
//
componentModule.directive('getCompilerWk', function($compile) {
return {
restrict: 'A',
link: function(scope, elm, attr) {
elm.click(function(){
$(body).append(templateHTML);
$compile($(body).find('p'))(scope);
})
}
};
});
答案 1 :(得分:6)
您从哪里调用此代码?通过使用angular.element(...)来确定它是否在Angular框架之外是否安全?
如果是这样,你可以使用:
// Split across two lines for readability...
angular.element(<something within Angular's scope>)
.injector().get('$compile')(...)
如果没有,您可能只需要将$ compile注入controller / directive / service。