【发布时间】:2016-05-20 01:05:48
【问题描述】:
我创建了一个指令来设置禁用输入框,这些框没有双击为“活动”。我有一个问题,AngularJS 仍然将那些已禁用的输入传递给范围函数。
基本输入 HTML:
<div class="selectable-boxes" toggle-inputs>
<div class="box selected">
<div class="form-container">
<div class="form-group">
<input type="text" placeholder="First" name="f1" data-ng-model="fields.information.f1">
</div>
...
全部命名为 f1、f2、f3..
指令:
app.directive( 'toggleInputs', function() {
return {
link: function(Scope, element, attrs) {
var $element = element;
$element.find('.box').bind('dblclick', function () {
$element.find('.box').removeClass('selected');
$(this).addClass('selected');
toggleInputDisabled();
});
function toggleInputDisabled() {
$element.find('.box').each(function () {
$(this).find(':input').attr('disabled', !$(this).hasClass('selected')).attr('data-ng-disabled', 'isDisabled');
});
}
toggleInputDisabled();
}
};
});
该指令工作正常。它禁用字段并添加 ng-disabled="'isDisabled' 并且我设置了 $scope.isDisabled = true;。但是,这些值仍然在 $scope 函数上传递。为什么?
Object {f1: "1", f2: "2", f3: "3", f10: "4", f11: "5"…}
【问题讨论】:
-
Scope.abc 模型将始终包含一些值。通过禁用,您不会删除 2 路绑定。
-
你是说我需要禁用 data-ng-model 属性来禁用值传递?我相信我可以做到这一点,它实际上解决了我的其他问题。我只是不知道如果我输入一些东西会不会影响输入含义,然后删除属性,然后再放回去,值会消失吗?
-
当你创建一个模型,并向它添加任何值时,它会存储它直到它被更改,如果通过任何方式在视图或控制器中,无论何时你将它更改为任何值,模型将被更新。你无法阻止这种情况发生。
-
那么您对这个特定问题的解决方案是什么?我需要将这些输入绑定到 ng-model 因为我需要我的 ng-click="function()" 将这些字段传递给函数,因为我在一个表单中有多个提交按钮。每个都有自己的参数。
标签: javascript angularjs