您好我有一张使用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'。
答案 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">