我的问题是我有一个允许用户添加新输入的表单,我在控制器中通过一个简单的$scope.urls = [{}];
$scope.addUrl = function() {
$scope.urls.push({});
};
到一个对象数组执行此操作。
data-ng-model="url.text"
就像那样,我也为4个其他范围对象做了这个,功能完全相同但是由于不同的范围对象,我发现自己必须在我的控制器中定义这个相同的功能4次为了让它发挥作用...
有什么方法可以将所有这些放入同一个对象中?
urls
这就是我的ng-model目前的样子,我并不真正将URL保存到“文本”键中,但我不能让它以任何其他方式工作。
所以我基本上只需要能够将GTG
(或任何包含url的范围数组的名称)传递到一个将推送空对象的函数中进入给定的数组,所以我可以避免冗余,只需要一个函数。
答案 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>