如何合并在不同范围对象上执行相同操作的多个函数?

时间:2016-06-08 15:43:17

标签: javascript angularjs

我的问题是我有一个允许用户添加新输入的表单,我在控制器中通过一个简单的$scope.urls = [{}]; $scope.addUrl = function() { $scope.urls.push({}); }; 到一个对象数组执行此操作。

data-ng-model="url.text"

就像那样,我也为4个其他范围对象做了这个,功能完全相同但是由于不同的范围对象,我发现自己必须在我的控制器中定义这个相同的功能4次为了让它发挥作用...

有什么方法可以将所有这些放入同一个对象中?

urls

这就是我的ng-model目前的样子,我并不真正将URL保存到“文本”键中,但我不能让它以任何其他方式工作。

所以我基本上只需要能够将GTG (或任何包含url的范围数组的名称)传递到一个将推送空对象的函数中进入给定的数组,所以我可以避免冗余,只需要一个函数。

1 个答案:

答案 0 :(得分: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>