我正在尝试使用角用户界面树来呈现一棵树。当我拖动"baz“节点时,在"bar”节点下将得到Uncaught TypeError: Cannot read property '$$phase' of null。但是,将任何其他节点拖到任何其他位置都很好。
我不明白错误信息是什么意思。我对角质还不熟悉。
这是我的代码:
http://plnkr.co/edit/G3dHRluoAmjiTmPmBZr2?p=preview
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="https://cdn.rawgit.com/JimLiu/angular-ui-tree/master/dist/angular-ui-tree.min.css">
<style>
.angular-ui-tree-placeholder {
background: #f0f9ff;
border: 2px dashed #bed2db;
}
.angular-ui-tree-handle {
background: #f8faff;
border: 1px solid #dae2ea;
color: #7c9eb2;
padding: 10px 10px;
}
</style>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.26/angular.min.js"></script>
<script type="text/javascript" src="https://cdn.rawgit.com/JimLiu/angular-ui-tree/master/dist/angular-ui-tree.min.js"></script>
</head>
<body ng-app="treeApp">
<div class="tree_section" ng-controller="treeCtrl">
<!-- Nested node template -->
<script type="text/ng-template" id="nodes_renderer.html">
<div ui-tree-handle class="tree-node tree-node-content">
{{id}} {{nodes[id].text}} {{nodes[id].child_ids}}
</div>
<ol ui-tree-nodes="" ng-model="nodes[id].child_ids">
<li ng-repeat="id in nodes[id].child_ids" ui-tree-node ng-include="'nodes_renderer.html'"></li>
</ol>
</script>
<div ui-tree id="tree-root">
<ol ui-tree-nodes="" ng-model="top_ids">
<li ng-repeat="id in top_ids" ui-tree-node ng-include="'nodes_renderer.html'"></li>
</ol>
</div>
<p>top_ids: {{top_ids}}</p>
<script>
var treeApp = angular.module("treeApp", ['ui.tree']);
treeApp.controller('treeCtrl', ['$scope',
function($scope) {
$scope.nodes = {
'1': {
'text': 'foo',
'child_ids': ['2'],
},
'2': {
'text': 'bar',
'child_ids': [],
}
}
$scope.top_ids = ['1']
$scope.nodes['3'] = {
text:'baz', child_ids:[]
}
$scope.nodes['1'].child_ids.push('3');
}
]);
</script>
</div>
</body>
</html>发布于 2015-03-12 07:59:23
andersManden在github问题上提供的解决方案似乎是可行的解决方案,
$scope.safeApply = function(fn) {
var phase = this.$root.$$phase;
if(phase == '$apply' || phase == '$digest') {
if(fn && (typeof(fn) === 'function')) {
fn();
}
} else if(phase == null){
fn();
} else {
this.$apply(fn);
}
};发布于 2014-11-19 06:10:09
我试着复制错误,但我不能复制,你能粘贴准确的错误,你得到什么时候?
发布于 2015-01-20 21:06:45
我得到了同样的错误,在我的例子中,这是因为不是我数组中的所有项都具有“子”属性。一旦我向每个项添加了一个子数组(即使子数组为空),错误就停止了。希望这能有所帮助!
https://stackoverflow.com/questions/26686120
复制相似问题