我正面临 $compile 的一个问题。我编写的代码非常大,因此我创建了一个小示例来复制此问题。假设我的页面中有一个按钮。当用户单击该按钮时,将创建另一个按钮,该按钮将具有 ng-click 方法,如下所示:
$scope.showAlert = function(){
alert('pass');
}
$scope.createExample = function() {
var button = '<button type="button" ng-click="' + $scope.showAlert + '()">click</button>';
angular.element(document.body).append($compile(button)($scope));
}
HTML:<button type="button" ng-click="createExample()">test</button>
当用户单击按钮时,将调用 createExample() 方法。此方法将创建另一个具有 ng-click 的按钮。这个 ng-clicks 包含一个发出警报的方法。
我在下面收到错误:
Error: Syntax Error: Token '{' is an unexpected token at column 12 of the expression [function (){
alert('pass');
}()] starting at [{
alert('pass');
}()].
at Error (native)
at throwError (https://code.angularjs.org/angular-1.0.1.js:5830:11)
at parser (https://code.angularjs.org/angular-1.0.1.js:5824:5)
at https://code.angularjs.org/angular-1.0.1.js:6387:29
at https://code.angularjs.org/angular-1.0.1.js:12493:18
at nodeLinkFn (https://code.angularjs.org/angular-1.0.1.js:4223:13)
at compositeLinkFn (https://code.angularjs.org/angular-1.0.1.js:3838:14)
at https://code.angularjs.org/angular-1.0.1.js:3750:30
at Object.$scope.createExample (http://fiddle.jshell.net/JKBbV/751/show/:44:65)
at https://code.angularjs.org/angular-1.0.1.js:6129:19 <button type="button" ng-click="function (){
alert('pass');
}()" class="ng-scope">
$compile 是我唯一的选择。如何使这项工作?
JSFiddle在这里