添加ng-click到使用ng-bind-html添加的div

时间:2013-12-18 03:21:12

标签: javascript html angularjs

我有一个使用angularjs在javascript中创建的div。在这里是 JS:

$scope.myHTML=$sce.trustAsHtml('<div
 ng-app="mainModule" 
 ng-controller="mainCtrl" 
 ng-click="updateText()" 
 class="squareButton ng-scope"> </div>");

html:

<div ng-controller="mainCtrl" ng-bind-html="myHTML" class="screenDiv"></div>

问题是,当我点击div时,它不会调用我的updateText()方法

$scope.updateText = function()
{
alert("worked");
}

div确实出现了。更新方法在mainCtrl控制器中 ng-click不起作用,我做错了,或者这只是不支持。

如果页面有帮助http://stevenjohnston.ca/所有方块“应该”弹出警报但是它没有。

2 个答案:

答案 0 :(得分:2)

当您在Html中写一些Html不知道的内容并且您希望angular知道那些语法如'ng-click'时,您必须通过$ compiler服务编译它。否则它将被angularj和Html视为普通字符串。 使用以下代码。

function htmlGeneratorController($scope, $compile, $sce){
$scope.myHTML=$compile($sce.trustAsHtml('<div ng-app="mainModule" ng-controller="mainCtrl" ng-click="updateText()" class="squareButton ng-scope"> </div>'))($scope);
}

希望这会有所帮助:)

答案 1 :(得分:1)

将HTML绑定到每个方块有什么特别的原因吗?

使用某些网格或表格并将ng-click绑定到每个单元格会更容易。

所以你可以将控件移到div之外

 <body ng-controller="mainCtrl">
    <!-- Create Table or Grid .Inside each cell add-->
    <div ng-click="updateText()"></div>
</body>