Ng-init如果尚未创建数组

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.所以在那里要小心.