javascript - AngularJS 中的 ng-repeat 内部的赋值运算符有何作用?

标签 javascript angularjs

我正在查看网页源代码,它具有以下 div 标签:

<div class="color-swatch" ng-if="quickOrderItem.colorNumber && !quickOrderItem.isCustomColor && filteredColors.length > 0" ng-repeat="color in filteredColors = (quickOrderItem.selectedSku.colorsArr | filterArrayOfObjects:quickOrderItem.colorNumber:'name':'colorNum' | limitTo:1 )">

我明白了大部分内容,但让我困惑的是最后一部分:

ng-repeat="color in filteredColors = (quickOrderItem.selectedSku.colorsArr | filterArrayOfObjects:quickOrderItem.colorNumber:'name':'colorNum' | limitTo:1 )"

为了简单起见,我将添加一些换行符以使其更易于阅读:

ng-repeat="color in filteredColors = (
quickOrderItem.selectedSku.colorsArr |     
filterArrayOfObjects:quickOrderItem.colorNumber:'name':'colorNum' |    
limitTo:1 )"

这到底是做什么的?据我所知,它正在遍历filteredColors数组,并将当前选择的每个颜色分配给变量color。 (基本上每个循环)

但我不知道其余的是什么意思。为什么“filteredColors 中的颜色”等于其他值?我不明白。此外,括号中的那三个独立的东西到底在做什么?

有人可以帮助我理解这一切意味着什么吗?

最佳答案

这个说法实际上是在一个衬里中使用了两个不同的 Angular 特征。这些是初始化器 filteredColors = ...,它初始化一个新变量来存储由其余 = (表达式) 生成的集合。这样做是为了在您需要在模板中进一步使用结果时捕获结果。表达式周围的括号仅用于确定 JavaScript 执行的范围。

第二个是 Angular 过滤器、过滤器管道和 Angular 过滤器上的自定义参数。您会看到 quickOrderItem.selectedSku.colorsArr 是一个 JavaScript 数组,因为它似乎被名为 filterArrayOfObjects 的自定义过滤器过滤,传递 3 个参数(由 分隔:)

  1. 字段quickOrderItem.colorNumber
  2. 字符串文字'name'
  3. 字符串文字'colorNum'

过滤器用管道“|”分隔并且可以互相改变,这样一个结果就是下一个的输入。所以最后代码使用 limitTo使用数字 1 参数进行过滤,以便将结果限制为仅第一个。

更具可读性的等效内容可能如下,但仍然没有太大改进:

<div class="color-swatch" 
     ng-if="quickOrderItem.colorNumber && 
           !quickOrderItem.isCustomColor && 
            filteredColors.length > 0" 
     ng-init="filteredColors = quickOrderItem.selectedSku.colorsArr | filterArrayOfObjects:quickOrderItem.colorNumber:'name':'colorNum'| limitTo:1" 
     ng-repeat="color in filteredColors">
</div>

关于javascript - AngularJS 中的 ng-repeat 内部的赋值运算符有何作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32335713/

相关文章:

javascript - AngularJS 修改嵌入的内容

php - 使用 Laravel 和 AngularJS 从数据库获取用户特定信息

javascript - 在 onclick 函数中发送数组

javascript - D3.js重叠条形图显示错误

javascript - 如何从 Angular 上的(点击)事件获取动态数据

javascript - 重新排列不起作用

javascript - 用三 Angular 形填充平面(三 Angular 测量)

javascript - CSS 和 jQuery 通用树形菜单

javascript - MDL 按钮波纹不一致

angularjs - 如何使用angular js在Cordova中插入#reference