【问题标题】:AngularJS | Build a path from foldersAngularJS |从文件夹构建路径
【发布时间】:2018-05-22 23:40:39
【问题描述】:

我目前正在递归浏览文件夹,我想“构建”我的文件夹的路径。

现在我可以创建这样的路径:folder1/folder2/folder3 使用我这样更新的字符串变量:

path += nameOfFolder + "/";

但是当我回到folder2 时,我的路径是:folder1/folder2/folder3/folder2

我只想删除列表中的最后一个对象而不是添加它。

AngularJS 中有什么东西可以自动完成整个系统,还是我必须手动完成?

【问题讨论】:

  • 我不确定你在做什么,但是 angularjs 可以使用 ngRouteui.router 的路由。作为 hack,您可以尝试拆分字符串并检查上一个文件夹:a = "folder1/folder2/folder3"b = a.split("/")b[b.length-2] == "folder2"
  • 非常感谢您的回答,但我现在有另一个问题:我想检测用户何时返回文件夹,以便删除列表的最后一个对象

标签: angularjs


【解决方案1】:

我仍然不知道您是如何在 AngularJS 中使用文件夹的。但是假设您已经有了在它们之间导航的方法,我建议使用 stack 来跟踪您访问过的文件夹。堆栈只是一个适用于主体后进先出的数组。我为分页做了这个小模拟:

var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
  $scope.stack = [];
  $scope.path = "/";
  $scope.go_to = function(name) {
    if (!name || (name == $scope.stack[$scope.stack.length - 1])) {
      return;
    }
    var index = $scope.stack.indexOf(name)
    if (index >= 0) { // found such folder
      $scope.stack = $scope.stack.slice(0, index + 1);
    } else {
      $scope.stack.push(name);
    }
    $scope.path = "/" + $scope.stack.join("/");
  }
  $scope.go_back = function() {
    $scope.stack.pop();
    $scope.path = "/" + $scope.stack.join("/");
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>

<div ng-app="myApp" ng-controller="myCtrl">

  <h3>Folders simulation</h3>

  Stack: <code>{{stack}}</code>
  <br> 
  Path: <code>{{path}}</code>
  <hr>
  <button ng-click="go_to(folder_name)">Go to:</button> <input type="text" ng-model="folder_name" /><br>
  <button ng-click="go_back()">Go back</button>

</div>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-08
    • 2019-08-10
    • 1970-01-01
    • 2016-07-02
    • 2019-05-17
    • 2020-11-14
    • 2018-05-26
    相关资源
    最近更新 更多