2015-10-16 99 views
1

我是angularJs的新手。我有一个使用ng-repeat生成新记录的页面:什么是angularJs方法将变量值传递回控制器

<tr ng-repeat="obj in objs"> 
    <td> 
    <input type="text" value="{{obj.name}}" /> 
    </td> 
    <td> 
    <input type="text" value="{{obj.amount}}" /> 
    </td> 
    <td> 
    <input type="text" value="{{obj.status}}" /> 
    </td> 
</tr> 

因为它们都是输入字段。所有数据都可写入客户。提交表单时,我正在尝试获取更新的数据。使用下面的代码:

$scope.submitform = function(index) { 
    var objJson = JSON.stringify($scope.objs); 
    $('input[id$="objList"]').val(objJson); 
    saveForm(); 
} 

但似乎$ scope.objs没有更新的客户输入,我可以理解。但问题是,我应该如何将值传递回$ scope.objs?我可以肯定地使用jQuery来做到这一点,但这可能听起来不是很有说服力。那么在angularJs中实现这个最好的方法是什么?

+2

你为什么不使用'ngModel'? – Satpal

+0

@Satpal,因为我还没有学到......我正在阅读关于它的文档 –

+1

use 你可以在控制器中使用$ scope.inputTest –

回答

1

您应该使用ng-model而不是value

<tr ng-repeat="obj in objs"> 
    <td> 
     <input type="text" ng-model="obj.name"/> 
    </td> 
    <td> 
     <input type="text" ng-model="obj.amount"/> 
    </td> 
    <td> 
     <input type="text" ng-model="obj.status"/> 
    </td> 
</tr> 

当用户编辑的input场这将更新$scope.objs

它的工作原理是因为ng-model被结合input与所述ng-model属性中指定的字段的值,并且obj仅仅是objs[$index]一个别名($index自动由角内ng-repeat提供)。

所以在这个领域input

<input type="text" ng-model="obj.name"/> 

要绑定input.value$scope.objs[$index].name

1

使用ng-model将值传递给控制器​​。

演示为NG-模型

var app = angular.module('myApp', []); 
 
app.controller('myCtrl', function($scope) { 
 
    $scope.firstName = "Krupesh"; 
 
    $scope.lastName = "Kotecha"; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="myApp" ng-controller="myCtrl"> 
 
    First Name: <input type="text" ng-model="firstName"><br> 
 
    Last Name: <input type="text" ng-model="lastName"><br> 
 
    <br> 
 
    Full Name: {{firstName + " " + lastName}} 
 
</div>

+0

来访问它。谢谢你的回答。两个答案对我都很有帮助。我点击添加一个这个答案。但是因为罗恩的回答更加简洁,直接指出了我的问题,所以我选择了他。 –

1

角具有MVVM架构。您可以将任何控制器数据绑定到视图(即html)并访问控制器中更改的数据。

如果您只想将数据从控制器发送到HTML,您可以使用ngBind指令。如果你想要双向绑定,即从控制器到HTML以及从HTML到控制器,那么使用指令ngModel。在当前场景中,您需要ngModel指令。

请参见下面的代码:

    <tr ng-repeat="obj in objs"> 
        <td> 
         <input type="text" ng-model="obj.name" /> 
        </td> 
        <td> 
         <input type="text" ng-model="obj.amount" /> 
        </td> 
        <td> 
         <input type="text" ng-model="obj.status" /> 
        </td> 
       </tr> 

当您从HTML更改任何数据,它在你的角度的控制器自动反映。即在$ scope.objs对象中。

相关问题