AngularJS:如何将模板中动态创建的模型名称传递给控制器​​?

时间:2016-05-08 01:09:53

标签: javascript angularjs indexing controller ng-repeat

我有一个模板,可以使用$ index值在ng-repeat指令中动态创建模型名称。这样我就可以增加最终传递的json元素标签。这是一个选择各种动态创建选项之一的字段。形式为:

<ng-model="data.items['item' + ($index+2)]">

这一切都很有效。我想使用附加到函数的按钮添加一个新功能,该按钮与按钮所绑定的任何特定ng-repeat实例相关联。此功能清除选项字段。所以在模板方面,我做了:

<ng-click="clearValue()" ng-disabled="!data.items['item' + ($index+2)]">

我希望控制器选择它。显然,由于控制器没有采用$ index属性,这不起作用。如果我对数字进行硬编码以测试它,如下所示:

$scope.clearValue = function() {
    $scope.data.items.item2 = undefined;
};

效果很好。但当然做这样的事情不会:

$scope.clearValue = function() {
    $scope.data.items['item' + ($index+2)] = undefined;
};

但当然,对其进行硬编码使其仅适用于该特定值。使用函数动态添加值,因此可以有一个,或一百个,或者介于两者之间。

有没有办法让clearValue函数在上面的表单中选择调用它的任何给定模型?

1 个答案:

答案 0 :(得分:0)

你可以做的只是将$ index传递回函数参数

中的控制器
<ng-click="clearValue(($index+2))" ng-disabled="!data.items['item' + ($index+2)]">

$scope.clearValue = function(index) {
    $scope.data.items['item' + (index)]  = undefined;
};

希望得到这个帮助。