Arrays 向AngularJS中的Json数组添加函数

Arrays 向AngularJS中的Json数组添加函数,arrays,json,angularjs,Arrays,Json,Angularjs,我从webapi返回了这个JSON对象 [{name:John,val1:10,val2:20,val3:0}, {name:Jane,val1:50,val2:200,val3:0}] 我将此数组存储在“$scope.dtArray”中,该数组使用ng repeat绑定到UI(文本框)。在绑定发生之前,我想分配一个函数来添加值,如下所示 this.val3 = function() {return Number(this.val1) + Number(this.val2) }; 对于数组中

我从webapi返回了这个JSON对象

[{name:John,val1:10,val2:20,val3:0},
{name:Jane,val1:50,val2:200,val3:0}]
我将此数组存储在“$scope.dtArray”中,该数组使用ng repeat绑定到UI(文本框)。在绑定发生之前,我想分配一个函数来添加值,如下所示

this.val3 = function() {return Number(this.val1) + Number(this.val2) };
对于数组中的每个对象。因此,当用户更改val1和val2文本框时,val3的值会自动更改

以下是UI标记

<div ng-repeat="cnt in dtArray track by $index">
    <table style="border-style: solid;">
        <tr>
            <td>
                <input type="text" ng-model="cnt.name">
                <input type="text" ng-model="cnt.val1">
                <input type="text" ng-model="cnt.val2">
                <input type="text" ng-model="cnt.val3()">
            </td>
        </tr>
    </table>
</div>

val1或val2中的值更改时未调用该函数

任何帮助都将不胜感激


谢谢。

尝试下面的html代码,而不是您的代码

<div ng-repeat="cnt in dtArray track by $index">
    <table style="border-style: solid;">
        <tr>
            <td>
                <input type="text" ng-model="cnt.name">
                <input type="text" ng-model="cnt.val1">
                <input type="text" ng-model="cnt.val2">
                <input type="text" ng-init="cnt.val3=val3(this)" ng-model="cnt.val3">
            </td>
        </tr>
    </table>
</div>
$scope.val3 = function(context) {return Number(context.val1) + Number(context.val2) };
请尝试下面的代码,而不是您的代码

<div ng-repeat="cnt in dtArray track by $index">
    <table style="border-style: solid;">
        <tr>
            <td>
                <input type="text" ng-model="cnt.name">
                <input type="text" ng-model="cnt.val1">
                <input type="text" ng-model="cnt.val2">
                <input type="text" ng-init="cnt.val3=val3(this)" ng-model="cnt.val3">
            </td>
        </tr>
    </table>
</div>
$scope.val3 = function(context) {return Number(context.val1) + Number(context.val2) };

是否仍希望
val3
成为可编辑的输入?你可以这样做:

<input type="text" ng-model="cnt.name">
<input type="text" ng-model="cnt.val1">
<input type="text" ng-model="cnt.val2">
<input type="text" ng-model="cnt.val3">

这样,val3在val1或val2更改时更新,但也可以自己编辑。

您必须在服务中添加该函数,例如,在angular中将json分配给dataobject。您可以共享完整的代码吗?请将函数绑定到输入
ng模型
,我很惊讶angular竟然能容忍这一点(如果有)。输入值可以使用
ng value=“cnt.val3=val3(this)”
但是为什么你要传递这个,我很好奇它没有在我的回答中使用
ng值
。谢谢你的输入,这仍然不起作用:val3是用正确的值初始化的,但没有在用户编辑val1和val2时更新。@RameshRajendran很抱歉什么不起作用?如果你清楚是谁,val3还是val1/val2?我没有检查什么时候一个值实际上是空的,我已经用它编辑了我的答案。