Я хочу использовать угловое-ivh-treeviewHow. этот образец, который я хочу использовать. но у этого образца есть проблема для меня, и именно когда я выбираю узел, не выбранный всем родителем. Как это исправить?
У вас есть хотя бы пара вариантов. Вы можете создать собственный шаблон и прослушать щелчки на флажке, а затем: захватить родителей щелкнутого узла и обновить их выбранный статус или испустить событие, указывающее родительским узлам, чтобы изменить выбранный статус.
Вот пример первого решения: http://jsbin.com/cegipa/6/edit?html,js,output
Обратите внимание, что при нажатии дочернего узла его родители обновляются в соответствии с его новым состоянием. Это достигается с помощью следующего шаблона:
<span ivh-treeview-twistie></span>
</span>
<input type="checkbox" select-parents ng-model="node.selected">
<span class="ivh-treeview-node-label" ivh-treeview-toggle>
{{trvw.label(node)}}
</span>
<div ivh-treeview-children></div>
С этой директивой, прикрепленной к флажку:
app.directive('selectParents', function(ivhTreeviewBfs) {
return {
link: function(scope, element, attrs) {
element.on('click', function() {
var n = scope.node;
ivhTreeviewBfs(stuff, function(node, parents) {
if(n === node) {
angular.forEach(parents, function(p) {
p.selected = n.selected;
});
return false;
}
});
scope.$apply();
});
}
};
});
И вы могли бы сделать что-то подобное (и, возможно, более эффективно), передавая события вокруг.