0

ノードを目的のフォルダーに追加しようとしていますが、残念ながら成功しません。考え方は単純です。ボタンをクリックすると、ノードの名前と説明などのパラメーターを入力するモーダルが表示されます。値は http 要求から動的に取得されます。ノードを保存するフォルダーを選択することもできますが、何らかの理由でノードが各親に表示されます。フォルダーを探していて、どこが間違っているのかわかりませんか? 私の問題でプランカーを再現しまし

私のコード:

(function() {

  app.controller('HomeCtrl', ["$scope", "$rootScope", "$http", '$interval', '$q', "$log", "$routeParams", "$location", "$uibModal",
    function($scope, $rootScope, $http, $interval, $q, $log, $routeParams, $location, $uibModal) {


      $scope.tree_core = {
        multiple: false, // disable multiple node selection
        check_callback: function(operation, node, node_parent, node_position, more) {
          // operation can be 'create_node', 'rename_node', 'delete_node', 'move_node' or 'copy_node'
          // in case of 'rename_node' node_position is filled with the new node name
          if (operation === 'move_node') {
            return false; // disallow all dnd operations
          }
          return true; // allow all other operations
        }
      };

      $scope.contextMenu = custom.contextMenu;

      // *** Begin Callback Functions for Tree ***
      // Describe callback function that to all necessary variables related with Jstree

      $scope.callback = function(e, data) {
        // ===== Click event on node for Industry =====
        for (var i = 0; i < data.selected.length; i++) {
          var parentNodeId = data.instance.get_node(data.selected[i]).parent;
          var parentNodeText = data.instance.get_node(parentNodeId).text;

          $scope.node = data.instance.get_node(data.selected[i]).text;
          $scope.path = data.instance.get_path(data.node, ' / ');

        }
      };

      // Declared initial folder

      $scope.filters = custom.sharedFilter;

      $scope.open = function() {

        var modalInstance = $uibModal.open({
          animation: $scope.animationsEnabled,
          templateUrl: 'modal.html',
          controller: 'EventFilterCtrl',
          size: 'md',
          resolve: {
            items: function() {
              return $scope.filters;
            }
          }
        });

        modalInstance.result.then(function(selectedItem) {
          $scope.selected = selectedItem;
        }, function() {
          $log.info('Modal dismissed at: ' + new Date());
        });
      };

      // Storing  variable in localstorage later will moved to DB
      // Data based on ui-modal and ui-grid callback functions

      $rootScope.saveFilter = function() {
        var $saveForm = $('#filter-save-form');
        var filterName = $saveForm.find('#filter-save-name').val();
        var filterDescription = $saveForm.find('#filter-save-description').val();

        $scope.item = {
          "text": filterName,
          "description": filterDescription,
          "value": Date.now(),
        };

        var i = 0;
        for (i; i < $scope.filters.length; i++) {
          if ($scope.filters[i]) {
            console.log("pass");
            $scope.filters[i].children.push($scope.item)
          }
        }

      };
      // ==== End Build Left Bar =====

    }
  ]);

}());
4

1 に答える 1

1

保存機能の条件が間違っています:

if ($scope.filters[i]) {
        console.log("pass");
        $scope.filters[i].children.push($scope.item)
      }

$scope.filters[i] は常に true を返します。新しいアイテムを正しいフォルダに追加するには、正しい条件を実装する必要があります

私はあなたのプランカーをフォークし、それを修正してモーダルで選択したノードを取得し、それを保存機能に入れました: https://plnkr.co/edit/lReRGfPUkYAeRjs9K2Sv?p=preview

于 2016-06-08T06:25:29.750 に答える