这是演示:https : //jimliu.github.io/angular-ui-tree/但是,当您删除所有当前节点并想要创建第一个节点时,情况又如何呢?
到目前为止,我有这样的事情:
<a href="" ng-click="createFirstChapterInput()"><span class="glyphicon glyphicon-circle-arrow-right"></span> New chapter</a>
<div class="row">
<div class="col-lg-12">
<div ui-tree id="tree-root">
<ol ui-tree-nodes ng-model="chapters">
<li ng-repeat="chapter in chapters" ui-tree-node ng-include="'nodes_renderer'"></li>
</ol>
</div>
</div>
nodes_renderer是一个模板,完全取自演示。将其粘贴到这里太长了。一般来说,应该使用此模板并在功能上对其进行编译。
这是createFirstChapterInput
函数:
$scope.createFirstChapterInput = function() {
$scope.chapter = {};
Restangular.copy({route: Chapters.url}, $scope.chapter);
$scope.chapter['name'] = null;
var result = $('<li>' + $('#nodes_renderer').html() + '</li>');
$('#tree-root').find('ol').prepend(result);
$compile(result)($scope);
result.find('input.new').focus();
}
但是,它最终会出现错误:
找不到指令'uiTreeHandle'所需的控制器'uiTreeNode'!
我不知道如何将此控制器传递给作用域,以便编译会看到它。另外,我不确定代码是否适合此操作或是否有更好的解决方案。
您正在遇到问题,因为您没有在“ Angular中思考”。这样的问题和答案是一个很好的起点。
简而言之,您无需在Angular的控制器中就DOM元素进行推理-而是考虑模型并创建模型。
您想添加第一个项目-将其添加到模型中chapters
,Angular将使View以您如何绑定模型来反映您的模型-在这种情况下,可以使用angular-ui-tree
:
$scope.createFirstChapterInput = function() {
var firstChapter = {name: "whatever"};
$scope.chapters.push(firstChapter);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句