"アクティブ"としてダブルクリックされていないボックスで入力を無効にする指示を作成しました。私は、AngularJSがスコープ関数に無効になっている入力をまだ渡すという問題があります。投稿時に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();
}
};
});
ディレクティブが正常に動作します。これは、フィールドを無効にし、 『isDisabled』と私は$scope.isDisabled = true;
を設定している」= NG-無効を追加します。しかし、これらの値は、まだ$スコープ機能に前方に渡されます。なぜ?
Object {f1: "1", f2: "2", f3: "3", f10: "4", f11: "5"…}
Scope.abcモデルには常に値が含まれます。無効にすることで、2ウェイバインディングが削除されません。 – Deadpool
値を無効にするためにdata-ng-model属性を無効にする必要があると言っていますか?私はそれを行うことができ、それは実際に私の他の問題を解決すると信じています。私はそれが入力に影響を与えるかどうかわかりませんが、何かを入力して属性を削除してから戻すと値はなくなりますか? – Rcls
モデルを作成して値を追加すると、モデルが変更されるまでモデルが保存されます。また、ビューやコントローラーのいずれかの方法でモデルを変更すると、モデルが更新されます。あなたはそれを止めることはできません。 – Deadpool