2016-01-22 125 views
0

我想将此类视图中的值从此视图传递给此窗体的角度js中的控制器。我不希望以这种方式对其进行硬编码。如何以适当的方式完成?将NG模型从视图传递到控制器角度js

angular.module('user').controller('UsersController', ['$scope', '$stateParams', 'Users', 
 
\t function($scope, $stateParams, Orders) { 
 
\t \t $scope.create = function() { 
 
\t \t \t var user = new Users({ 
 
\t \t \t \t child: [ 
 
\t \t \t \t \t { columnA: child[0].columnA, columnB: child[0].columnB, columnC: child[0].columnC }, 
 
\t \t \t \t \t { columnB: child[1].columnA, columnB: child[1].columnB, columnC: child[1].columnC }, 
 
\t \t \t \t \t ... 
 
\t \t \t \t \t { columnC: child[10].columnA, columnB: child[10].columnB, columnC: child[10].columnC } 
 
\t \t \t \t ] 
 
\t \t \t }); 
 
\t \t } 
 
\t } 
 
});
<form data-ng-submit="create()"> 
 
    <input type="text" data-ng-model="child[0].columnA"> 
 
    <input type="text" data-ng-model="child[0].columnB"> 
 
    <input type="text" data-ng-model="child[0].columnC"> 
 

 
    <input type="text" data-ng-model="child[1].columnA"> 
 
    <input type="text" data-ng-model="child[1].columnB"> 
 
    <input type="text" data-ng-model="child[1].columnC"> 
 
    
 
    ...... 
 

 
    <input type="text" data-ng-model="child[10].columnA"> 
 
    <input type="text" data-ng-model="child[10].columnB"> 
 
    <input type="text" data-ng-model="child[10].columnC"> 
 
</form>

这将是,如果可能上面的函数执行的可重复使用的指令更好。

$scope.create = function() { 
    child: toJSON(child); 
} 

function toJSON(var a) { 
    //automatically search through the view for ng-model with child[index].columnName and change to the form above. 
} 
+0

不清楚你在问什么。你试过用'ng-repeat'吗? – charlietfl

+0

@charlietfl您好,我目前没有问题。这是从视图到控制器的用户提交表单的后表单。在这种情况下,如何简化控制器中的分配数据ng模型进程? – stackdisplay

+0

仍然不理解问题。你意识到'ng-model'会自动创建你已经存在的所有对象,如果它们不存在的话? – charlietfl

回答

2

我写了一个plunker演示做类似你正在尝试采用了棱角分明的做法做一些事情的方法之一。

您会注意到我通过使用ng-repeat消除了视图中的所有重复,并且使得元素的数量为动态的。我使用空数组初始化了users对象,但可以使用服务器中的数据轻松初始化对象。

还要注意改变为形式立即物体反射,在create()功能意味着,您可以序列化users对象,而不是形式的值。实际上,这可能不是必需的,但是,因为如果使用像$http这样的角度库,JSON的序列化将自动执行。

$scope.users = { 
    child: [{}] 
}; 
$scope.create = function() { 
    var data = angular.toJson($scope.users); 
    alert(data); 
}; 

$scope.addUser = function() { 
    $scope.users.child.push({}); 
}; 
<form ng-submit="create()"> 
    <div ng-repeat="user in users.child"> 
    <input type="text" ng-model="user.columnA"> 
    <input type="text" ng-model="user.columnB"> 
    <input type="text" ng-model="user.columnC"> 
    </div> 
    <button type="submit">Submit</button> 
</form> 
<button ng-click="addUser()">Add New User</button> 

<pre> {{users}}</pre> 

从这个主要外卖,但是,应该是在视图和控制器一起工作以消除重复和不必要的引用。我们不再指HTML中的child[0],这使得HTML更具可读性和可维护性。

相关问题