在AngularJS中添加一个HTML包含ng-click

9

我在我的控制器中有这段代码,我打算将html()添加到我的HTML代码中,一切都没问题,只是ng-click不起作用!你有什么想法为什么ng-click不能工作吗?

 var html='<div ng-click="selectedValue('+Value+')">Value</div>' ;
     $('#myDiv').html(html);

   $scope.selectedValue = function(value){
     $scope.val =value;

  };

我需要使用 ng-click 函数 selectedValue 来选择在 div 中显示的值。
2个回答

21

使用此代码:

请查看pluker

控制器:

var html='<div ng-click="selectedValue(value)">Value</div>',
    el = document.getElementById('myID');

$scope.value='mk';

angular.element(el).append( $compile(html)($scope) )

$scope.selectedValue = function (value) {
    $scope.val = value;
    console.log($scope.val)
};

Html:

<body ng-controller="MainCtrl">
    <div id="myID"></div>
</body>

1
@mukund:有没有办法在AngularJS服务中添加HTML而不是在控制器中添加? - Sagar

5

你应该只通过指令来进行DOM操作,确保在注入元素之前需要编译它。

代码

 var html='<div ng-click="selectedValue('+Value+')">Value</div>' ;
 angular.element(document.getElementByID('myDiv')).append($compile(html)(scope));

.append 可以用于将任何 div 添加到匹配的 div 元素之后,但 .prepend 却不行。 - Slimshadddyyy
是的没错。jQuery 已经被包含了。在 Angular 中有其他替代方法来在任何元素之前插入/预置吗?此外,prepend 是 jqlite 的一部分 - https://docs.angularjs.org/api/ng/function/angular.element - Slimshadddyyy
@Slimshadddyyy 我错了。然后使用prepend也应该可以。 - Pankaj Parkar
http://stackoverflow.com/questions/39610194/angularjs-prepend-html-using-directive - Slimshadddyyy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接