我使用名为“Treant.js”的JavaScript库来动态生成树结构。
因为负责树结构的DOM元素是由Treant.js库动态生成的SVG,所以我根本无法直接访问这些元素。
以下是HTML的内容
<div class="node nodeBranches>
<p class="node-name>TEXT</p>
</div>
只要通过表单添加新数据,此代码块就会添加到树DOM中。
这是我想出的代码,以便将“ng-class”指令添加到其类为node的div中。
var target = angular.element(".nodeBranches");
for (var i = 0; i < target.length; i++) {
target.eq(i).attr("ng-class", "changeClass()");
}
查看chrome中的开发人员工具,我看到自定义属性“ng-class”被添加到每个div.node,但功能不存在。
同样的事情也发生在“ng-click”属性上。我可以在代码中看到自定义指令,但它不起作用。
如何使用AngularJS进行此工作?
答案 0 :(得分:1)
按$compile
。 Document here
一个例子,帮助它发挥作用。
angular.module('app', [])
.controller('appCtrl', function($scope) {
})
.directive('ngAddClass', function($compile) {
return {
restirct: 'AE',
link: function(scope, ele, attrs) {
scope.changeClass = function() {
console.info('red');
return 'red';
}
var target = angular.element(".nodeBranches");
for (var i = 0; i < target.length; i++) {
target.eq(i).attr("ng-class", "changeClass()");
$compile(target)(scope);
}
}
}
});
.red {
color: red;
}
<script src="//cdn.bootcss.com/jquery/2.0.0/jquery.js"></script>
<script src="//cdn.bootcss.com/angular.js/1.4.7/angular.min.js"></script>
<div ng-app="app">
<div ng-controller="appCtrl">
<div ng-add-class>
<div class="node nodeBranches">
<p class=" node-name">TEXT</p>
</div>
</div>
</div>
</div>