2016-07-21 5 views
2

Кто-то создал пользовательский тег в проекте, такие какКак добавить ng-click углового для элемента, созданного JQuery?

<mytable config='{head:[title1, title2],data:[[col1, col2]]}'></mytable> ,

тег выше будет генерировать таблицу после загрузки страницы.

Я хочу, чтобы создать кнопку в таблице, а затем вставить строку:

'<button class="btn btn-primary" ng-click="lookup(3)">lookup</button>';

но нг-клик не работает. Я пишу простой код, чтобы дразнить его:

<!DOCTYPE html> 
<html ng-app="myApp"> 
    <head> 
     <script type="text/javascript" src="/javascripts/jquery.min.js"></script> 
     <script type="text/javascript" src="/javascripts/angular/1.4.0/angular.min.js"></script> 
     <script> 
      var create = function() { 
       $('#template').html('<button ng-click="changeName()">click me</button>') 
      } 
     </script> 
    </head> 
    <body ng-controller="myCtrl"> 
     <span>{{name}}</span> 
     <div id="template"></div> 
     <button onclick="create()">create</button> 

     <script> 
      var app = angular.module('myApp', []); 
      app.controller('myCtrl', function($scope) { 
       $scope.name = "John"; 
       $scope.changeName = function() { 
        $scope.name = "Jack"; 
        alert("success"); 
       } 
      }); 
     </script> 
    </body> 
</html> 

Я гугл и найти угловое должен компилировать вновь созданный элемент, но я не знаю, как в этой ситуации

ответ

0

Вы должны использовать нг -repeat, чтобы создать эти кнопки, а не jQuery.

А затем угловой автоматически свяжет ng- с этим новым элементом.

+0

тег содержит другие функции, которые мне нужны, нет нужно снова создать эти функции, поэтому я не могу использовать ng-repeat для создания новой таблицы. – fudy

1

Вам нужен сервис $compile. не

var app = angular.module('myApp', []); 
    app.controller('myCtrl', function($scope, $compile) { 

     $scope.create = function() { 
       $compile($('#template').html('<button ng-click="changeName()">click me</button>'))($scope); 
     } 
       $scope.name = "John"; 
       $scope.changeName = function() { 
        $scope.name = "Jack"; 
        alert("success"); 
       } 
    }); 

И изменить HTML для

<button ng-click="create()">create</button> 

Или вы можете получить все тело, а затем вызвать $compile к нему

var body = $angular.element(document).find('body'); 
$compile(body)($scope); 
+0

Как я уже упоминал, таблице нужна только конфигурация json format, возможно, после готовности jquery (), что он создаст таблицу, предоставленное вами решение не поможет – fudy

Смежные вопросы