当前位置: 首页 > 知识库问答 >
问题:

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

姬雪松
2023-03-14

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,它只包含唯一的TickerID,但如果记录状态分别为1或2,它仍然填充“待定”或“已解决”值。

新的目标{"ticker":"Ticker","tickerId":"TickerID","待定": 0或1,"已解决": 0或1}

基于示例数据的预期结果:{“ticker”:“DPAX”,“tickerId”:4512,“待定”:0,“已解决”:1},{“ticker”:“ONP”,“tickerId”:10190,“待定”:0,“已解决”:0}

javascript代码位于控制器中。js文件在一个有角度的项目中。无论我使用什么代码来迭代现有的JSON,我都会返回一个空数组。我试过for循环,for in循环,当我运行一个简单的股票代码时。现有JSON上的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>

浏览器按预期输出“tickerList”,但{{tickerMenu}}返回0。不知道我错过了什么。

共有2个答案

傅博容
2023-03-14

答案是创建一个定制。滤器

所以:ticker in tickers | myCustomFilter

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

曾元忠
2023-03-14

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

 类似资料:
  • 我对分级建造系统和智能是新的。 那么我如何创建一个Android库项目(例如com.myapp.lib1)和应用程序项目(例如com.myapp.app),并使构建系统在应用程序项目上包含com.myapp.lib1呢? 我转到Project Structure->Modules->我的App项目,并向lib项目添加了一个依赖项。IntelliJ现在在应用程序项目中使用时可以从lib项目中识别类,

  • #或$对我来说无关紧要 通常在Spring中,您可以将属性注入bean,我已经成功了。但是现在我希望用户输入一个模板字符串,可以使用应用程序上下文中的所有属性进行翻译。目前我不需要访问bean属性,但将来我可能需要。以上是定义文件夹路径时最常见场景的简化变体。运行时参数(例如,一天中的时间)增加的复杂性很小,但我问的问题是一步一步地工作。 因此,我试图在JUnit的帮助下,通过玩Spring表达式

  • 问题内容: 我想将node js用作react native项目中的后端。 问题答案: 是的,您 可以 通过正确使用Big Rich的ReactNativify 来 使用为Node编写的包。但是要考虑一些事项: 1)我遵循在问题清单中找到的建议,并分为两部分: Transformers.js(在和中调用): babel-transformer.js(也在): 2)如您在上面的代码中所见,我还演示了

  • 问题内容: 我想创建一个可以分为多个模块的应用程序,它们各自具有路由功能。用户可以从应用程序主模块打开和关闭这些模块。 我是否必须加载所有模块并根据用户是否已订阅禁用该模块。我认为这会减慢应用程序的加载,因为加载了所有模块代码并在应用程序引导时注入。 还有其他替代方法可以解决此问题吗? 问题答案: 应该为主要模块提供已启用模块的列表: 显然,无法正常加载array ,因为此时应用程序尚未启动。XH

  • 文件和文件夹设置 生成的应用程序文件夹将如下所示: 应用程序文件夹 应用程序配置存储在不同的位置,一些位于config文件夹中,如测试配置,一些存储在项目根目录中,如linting信息和构建信息。 CLI将应用程序特定的文件存储在src文件夹中,并将Angular 2特定的代码存储在src / app文件夹中。 CLI生成的文件和文件夹将遵循官方样式指南。 警告:CLI依赖配置文件中定义的某些设置

  • 问题内容: 我需要从指令中的父控制器继承范围。我不一定要离开范围:false。我也不一定要使用孤立的作用域,因为要获得我确实关心的值正确链接(需要在父控制器中考虑很多值),就需要大量的工作。 如果要更新父范围,在我的指令中使用是否有意义? 请检查小提琴 问题答案: 尽管@user1737909已经引用了SO问题来阅读(AngularJS中范围原型/原型继承的细微差别是什么?它将解释该问题并建议各种