在指令的链接功能中添加ng-click

时间:2014-04-06 19:24:43

标签: angularjs

我的指令中的链接功能有以下功能:

var add_todos = function(todos) {
     html += "<ul>";
     for (var i = 0; i < todos.length; i++)
     {
           html += '<li> <input type="checkbox">'+ todos[i].title;
           add_todos(todos[i].children);
           html += '</li>';
     }
     html += "</ul>";
 };

然后我使用element.replaceWith(html)。这一切都很好,但我想在复选框中使用ng-if。但是,如果我只是html += '<li> <input type="checkbox" ng-click="myFunction()">'+ todos[i].title;,它就不会起作用,因为html不再以角度进行评估。

我知道如果我使用模板,它会评估ng-click(),但我不知道如何在保持链接功能的同时使用模板。我一直在考虑让angularJS将html视为模板,这意味着它会评估ng-click()。但是,我不知道如何做到这一点。当然,欢迎使用其他更有效的方法也是受欢迎的。

1 个答案:

答案 0 :(得分:2)

您应该使用$compile服务:

var add_todos = function(todos) {
    var html = '…';

    var myListElement = $compile(html)($scope);
    element.replaceWith(myListElement);
};

但请不要过度使用$compile。在您的示例中,带有ngRepeat的模板似乎是一个好主意!