仅在第一次加载数据时使用ng-

时间:2016-06-15 14:10:12

标签: angularjs razor asp.net-mvc-5

您好我有一张使用ng-repeat填充的表格。该表的每一行都有一些保存到数据库的输入。

我的API将视图模型作为JSON传递给Angular,如果已经有一个对象的值我想在没有输入的列中显示该值。

这是我的表

<table class="table table-responsive">
<thead>
    <tr>
        <th></th>
        <th>Result Value</th>
        <th>Statement / Instructions</th>
    </tr>
</thead>
<tbody>
    <tr data-ng-repeat="c in myData.items">
        <td>{{ c.Name }}</td>

        <td ng-if="c.NumericValue">{{c.NumericValue}}</td>
        <td ng-if="!c.NumericValue">
            <input type="text" name="value" data-ng-model="c.NumericValue" data-ng-trim="false">
        </td>

        <td ng-if="c.Statement">{{c.Statement}}</td>
        <td ng-if="!c.Statement">
            <input type="text" name="statement" data-ng-model="c.Statement" data-ng-trim="false">
        </td>
    </tr>
</tbody>

这几乎有效,除了当我在输入框中输入单个字符时,输入被删除,值显示为文本。我知道这是Angular的工作方式,但有一种方法只能在第一次加载数据时检查数据并停止Angular重新加载单元格内容,以便我可以完全输入我的数据而无需重新加载单元格内容。

我很抱歉,如果这是基本的,但我只是开始使用Angular而且我还不完全熟悉它可以做的一切。

提前感谢您提供任何帮助

更新 为了尝试澄清,ng-if检查c.NumericValue是否为空。如果为空,则显示输入。当我输入值的第一个字符后输入值。输入框将被删除并替换为

<td ng-if="c.NumericValue">{{c.NumericValue}}</td>

我想要的是在加载表时检查c.NumericValue是否有值。如果确实显示

<td ng-if="c.NumericValue">{{c.NumericValue}}</td>

否则让我使用

输入值
<td ng-if="!c.NumericValue">
    <input type="text" name="value" data-ng-model="c.NumericValue" data-ng-trim="false">
</td>

例如,如果我想在输入'1'后输入'10',则输入框将替换为文本'1'。

1 个答案:

答案 0 :(得分:2)

如果我理解你的问题,我想你会想要使用一次时间绑定(在AngularJS 1.3中引入),以便ng-if在第一次摘要后不会被重新评估。像这样:

    <td ng-if="::c.NumericValue">{{c.NumericValue}}</td>
    <td ng-if="::!c.NumericValue">

    <td ng-if="::c.Statement">{{c.Statement}}</td>
    <td ng-if="::!c.Statement">