作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个表将显示从服务器发送的结果,但是结果本身具有动态形状。还有另一个 API 提供嵌套的形状/模式。所以我的 HTML 看起来像这样:
<tr ng-repeat="result in results">
<td ng-repeat="path in schema.paths">{{result[path]}}</td>
</tr>
当然,这是行不通的,因为 path
可能是一项,也可能是用点字符串表示的多项。也就是说,路径可以是有效的 nesting1
,也可以是无效的 nesting1.nesting2.nesting3
。在不使用 JavaScript 中的 $compile
服务的情况下,如何适应此用例?
最佳答案
如果我正确理解这个问题,我认为有一个 Lodash 函数可以在这里帮助你。
它的名字是 get 。用法:
var object = { 'a': [{ 'b': { 'c': 3 } }] };
_.get(object, 'a[0].b.c');
// => 3
_.get(object, ['a', '0', 'b', 'c']);
// => 3
_.get(object, 'a.b.c', 'default');
// => 'default'
对于您的情况,它可能看起来像:
controller.js
import { get } from 'lodash-es';
...
// Your controller code...
...
this.getResultAtPath = path => get(this.results, path);
template.html
<tr ng-repeat="result in results">
<td ng-repeat="path in schema.paths">{{ getResultAtPath(path) }}</td>
</tr>
如果你不想承担依赖,我建议你看看他们的 get
的实现.
关于javascript - 如何在 AngularJS 中绑定(bind)可变长度属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54165966/
我是一名优秀的程序员,十分优秀!