我有一个使用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/所有方块“应该”弹出警报但是它没有。
答案 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>