oBu*_*usk 13 javascript arrays angularjs angularjs-ng-repeat
我正在尝试为应用程序构建模板,并希望显示带有名称的动态列表.所以我得到这个代码来显示列表并添加/删除行;
<table ng-init="page.businessRows = []">
<thead>
<tr>
<th>Company</th>
<th>Contact</th>
<th>Phone</th>
</tr>
</thead>
<tr ng-repeat="row in page.businessRows">
<td>
<input type="text" ng-model="row.name" />
</td>
<td>
<input type="text" ng-model="row.contact" />
</td>
<td>
<input type="text" ng-model="row.phone" />
</td>
<td>
<button ng-click="page.businessRows.splice($index,1)">
Remove
</button>
</td>
</tr>
</table>
<button class="btn" ng-click="page.businessRows.push({})">addRow</button>
Run Code Online (Sandbox Code Playgroud)
加载此模板时,page.busnessRows很可能会加载行,因此我想更改ng-init为仅在未初始化businessRows时创建空数组.
我试过ng-init="page.businessRows = page.businessRows.length < 1 ? [] : page.businessRows但它没有用.我如何打算在jsangular表达式中做条件?
所有帮助赞赏.提前致谢
Buu*_*yen 25
你可以这样做:
<table ng-init="page.businessRows = page.businessRows || []">
Run Code Online (Sandbox Code Playgroud)
更新
我查看AngularJS的解析器代码,注意版本1.2(当前RC)支持三元表达式.因此,如果您使用AngularJS 1.2,这也将起作用(尽管比上面的代码更冗长):
<table ng-init="page.businessRows = page.businessRows == null ? [] : page.businessRows">
Run Code Online (Sandbox Code Playgroud)
在这里看演示.
但是,如果page.businessRows是原始代码,则原始代码可能不起作用null,因为解析器将无法取消引用length属性null.所以在那里要小心.