如何在运行时将具有单击事件的元素添加到角度范围

时间:2016-05-24 14:44:12

标签: javascript asp.net angularjs

到目前为止,我在Scope passScope上使用了名为onGroundUserClick的以下函数。

我想设置它,以便在加载iframe时运行的函数将设置ng-click。

var $tdName = $("<td/>", {
                    "class": "name",
                    "ng-click": "passedScope.onGroupUserClick(this)",
                });

当我在Chrome中打开开发者控制台时,我看到ng-click属性确实已添加到按钮中,但它不会启动该事件。

a class="link" ng-click="passedScope.onGroupUserClick(this)" href="">Account Manager a

任何建议都将受到高度赞赏。我有点被困在这里。

3 个答案:

答案 0 :(得分:1)

将元素添加到DOM后,请调用$scope.$digest();以填充模型,并将UI设置为&#34;同步&#34;。您可以在此处找到更全面的解释:

msdn

答案 1 :(得分:0)

您可以在循环中创建<td>视图,如变量$ tds,并在ng-click中传递您的逻辑,这将起作用。 您必须动态更改循环变量$ tds值。

像:

<td ng-repeat="td in tds"> <a ng-click="your_fun()">{{td.val}}</a> </td>

答案 2 :(得分:0)

你想看起来像这样:

&#13;
&#13;
var app = angular.module('myApp', []);
app.directive('custom', function ($compile) {
  return{
        restrict:'A',
        link: function (scope, ele, attrs) {
      scope.$watch(attrs.custom, function(html) {
        ele.html(html);
        $compile(ele.contents())(scope);
      });
    }
    
 };
});
app.controller('myCtrl', function($scope) {
$scope.html = '<button ng-click="doSomething()">Click me</button>';
$scope.doSomething = function(){
      alert('click');
    };
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myApp" ng-controller="myCtrl" >
<div custom="html"></div>
</div>
&#13;
&#13;
&#13;