angularJS $ compile未定义

时间:2013-06-03 22:50:18

标签: angularjs

我正在尝试学习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!

2 个答案:

答案 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。