在 Angular 项目中迭代 JSON 响应以创建新的 $scope obj 我可以在应用程序中使用的

iterate JSON response in Angular project to create new $scope obj i can use in the app

本文关键字:scope obj 应用程序 我可以 创建 项目 Angular 迭代 JSON 响应      更新时间:2023-09-26

JSON:

[{
    "SHFUserID": "400",
    "Status": "2",
    "Ticker": "DPAX",
    "TickerID": "4512",
    "TotalBought": "6300.000000",
    "TotalSold": "4200.000000",
    "TotalSharesNow": "23500.000000"
},
{
    "SHFUserID": "400",
    "Status": null,
    "Ticker": "DPAX",
    "TickerID": "4512",
    "TotalBought": "70500.000000",
    "TotalSold": "47000.000000",
    "TotalSharesNow": "45000.000000"
},
{
    "SHFUserID": "400",
    "Status": null,
    "Ticker": "ONP",        
    "TickerID": "10190",
    "TotalBought": "1175.000000",
    "TotalSold": "1645.000000",
    "TotalSharesNow": "-470.000000"
}]

我正在尝试迭代 Json 以创建一个新的 obj,该 obj 仅包含唯一的 TickerID,但如果记录状态分别为 1 或 2,则仍会填充"待处理"或"已结算"值。

新的所需对象 {"ticker": "Ticker", "tickerId": "TickerID", "待定": 0 或 1, "已结算": 0 或 1}

基于示例数据的预期结果: {"代码": "DPAX", "tickerId": 4512, "待定":0, "已结算": 1},{"ticker": "ONP", "

tickerId": 10190, "待定":0, "已结算": 0}

JavaScript代码位于Angular项目的控制器.js文件中。无论我使用什么代码来迭代现有的 JSON,我都会返回一个空数组。我已经尝试了一个 for 循环,for in 循环,当我在现有 JSON 上运行一个简单的 ticker.length 函数时,它会返回 0??

控制器.js:

function TickerListCtrl($scope, Ticker) {
var ticker = [];
ticker = Ticker.query();
$scope.tickers = ticker;
$scope.tickerMenu = ticker.length;  
...
}

资源.js

angular.module('tickerServices', ['ngResource']).
  factory('Ticker', function($resource){
    return $resource('http:........../Rest/tickers.php', {}, {
      query: {method:'GET', params:{UserID:400}, isArray:true}
  });
});

应用.js

 angular.module('tickercat', ['tickercatFilters', 'tickerServices']).
 config(['$routeProvider', function($routeProvider) {
 $routeProvider.
  when('/tickers', {templateUrl: 'partials/tickers-list.html',   controller: TickerListCtrl}).
  otherwise({redirectTo: '/tickers'});
}]);

股票代码列表.html:

...
    <div class="span3">
  <!--Sidebar content-->
  ...
  <ul class="tickerList">
    <li ng-repeat="ticker in tickers | filter:query | orderBy:orderProp">
      <a href="#/ticker/{{ticker.TickerID}}">{{ticker.Ticker}}</a>
      <p>{{ticker.Status}}</p>
    </li>
  </ul>
{{tickerMenu}}
</div>

浏览器按预期输出"股票代码列表",但 {{tickerMenu}} 返回 0。不知道我错过了什么。

不是因为您有针对 UL 元素的控制器,而是在关闭 UL 后调用 tickerMenu scope 属性吗?

答案是创建自定义的.filter。

so: 股票代码中的股票代码 | myCustomFilter

http://docs.angularjs.org/guide/dev_guide.templates.filters