解析AngularJS中键值对的值部分的不同方法

时间:2018-03-21 19:01:28

标签: javascript angularjs angularjs-ng-repeat

我有一个看起来像这样的键值对($ ctrl.displayData) -

143:"/this/is/a/very/long/fil22↵/this/is/a/very/long/file/path.php↵anotherone.php↵newfilel123.php"

它保存文件名,当我用ng-repeat显示时,文件名以换行符显示(就像我想要的那样)。

对于显示我使用 -

<div>
    <div id="outputDiv" ng-click="$ctrl.deleteRow(displayData)" ng-repeat="displayData in $ctrl.displayData">{{displayData}}</div>
</div>

函数deleteRow()目前非常基本 -

ctrl.deleteRow = function(index){
    console.log(index);
}

但是当我循环使用ng-repeat时,整个 {{displayData}} 只会在一次迭代中被打印出来,所以如果我要调用像 deleteRow()这样的函数< / strong>点击任何一个文件名,它每次只返回整个文件名集(而不是我点击的特定文件名)。

是否有办法循环遍历 $ ctrl.displayData ,以便在单击任何特定文件名时,仅为该文件名调用该函数。

2 个答案:

答案 0 :(得分:0)

你可以使用javascript split吗?

&#13;
&#13;
// <body ng-app='myApp' binds to the app being created below.
var app = angular.module('myApp', []);

// Register MyController object to this app
app.controller('MyController', ['$scope', MyController]);    

// We define a simple controller constructor.
function MyController($scope) {
   $scope.files = "/this/is/a/very/long/fil22 \n /this/is/a/very/long/file/path.php \n anotherone.php \n newfilel123.php"

  $scope.split = function(s) {
    return s.split('\n');
  }

  $scope.doStuff = function(d) {
    console.log(d);
  }
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div ng-app="myApp">
<div ng-controller='MyController'>
    <p ng-repeat="d in split(files)">
      <span ng-click="doStuff(d)">{{d}}</span>
    </p>
</div>
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

我在JS控制器内处理它(使用拆分)。

ctrl.arrayList = new Array(); 
for(var i in ctrl.displayData) { 
    ctrl.arrayList = ctrl.displayData[i].split('\n'); 
}
return ctrl.arrayList;

在此之后,我在数组ctrl.arrayList上使用ng-repeat在HTML文件中显示。