首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角用户界面树拖动不起作用

角用户界面树拖动不起作用
EN

Stack Overflow用户
提问于 2014-11-01 04:14:45
回答 4查看 5.8K关注 0票数 1

我正在尝试使用角用户界面树来呈现一棵树。当我拖动"baz“节点时,在"bar”节点下将得到Uncaught TypeError: Cannot read property '$$phase' of null。但是,将任何其他节点拖到任何其他位置都很好。

我不明白错误信息是什么意思。我对角质还不熟悉。

这是我的代码:

http://plnkr.co/edit/G3dHRluoAmjiTmPmBZr2?p=preview

代码语言:javascript
复制
<!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>
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-03-12 07:59:23

andersManden在github问题上提供的解决方案似乎是可行的解决方案,

代码语言:javascript
复制
   $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);
      }
    };
票数 2
EN

Stack Overflow用户

发布于 2014-11-19 06:10:09

我试着复制错误,但我不能复制,你能粘贴准确的错误,你得到什么时候?

票数 0
EN

Stack Overflow用户

发布于 2015-01-20 21:06:45

我得到了同样的错误,在我的例子中,这是因为不是我数组中的所有项都具有“子”属性。一旦我向每个项添加了一个子数组(即使子数组为空),错误就停止了。希望这能有所帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26686120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档