2016-06-08 17 views
0

我的问题是,我有一个表单,允许用户添加新的输入,我通过一个简单的push控制器在一个对象数组中执行此操作。如何合并几个在不同范围对象上执行相同操作的函数?

$scope.urls = [{}]; 

$scope.addUrl = function() { 
    $scope.urls.push({}); 
}; 

就这样,事情是我对其他4个范围做了对象,功能是完全一样的,但由于不同范围的对象,我发现自己不必定义相同功能,4种不同的时间在我的控制器为了得到它的工作...

有什么办法,我可以把所有这些到同一个对象?

data-ng-model="url.text"

这是我的NG-模型的样子,此刻,我真的不URL的将被保存到“文本”键,但我不能让它开始工作任何其他方式。

所以我基本上只需要能够通过urls(或包含的URL将是范围阵列的名称等等)成将推动一个空对象到给定的数组的函数,所以可避免冗余,只有一个功能。

+1

把功能服务,其所有的控制器能使用。 –

回答

0

不知道这是你问的问题。评论你的意思是否别的。

控制器:

$scope.addUrl = addNewElement; 

initializeUrlGroups(); 

//////////////////////////////////////////////////////////// 

function initializeUrlGroups() { 
    ['urls1', 'urls2', 'urls3', 'urls4'].forEach(function (referenceName) { 
     $scope[referenceName] = [{}]; 
    }); 
} 

function addNewElement (referenceName) { 
    $scope[referenceName].push({}); 
}; 

HTML:

<button ng-click="addUrl('urls1')">Add URL (Group 1)</button> 
<button ng-click="addUrl('urls2')">Add URL (Group 2)</button> 
<button ng-click="addUrl('urls3')">Add URL (Group 3)</button> 
<button ng-click="addUrl('urls4')">Add URL (Group 4)</button> 

或者......

HTML:

<button ng-repeat="n in [1, 2, 3, 4]" ng-click="addUrl('urls' + n)"> 
    Add URL (Group {{n}})</button> 
相关问题