私は多くのフォーム要素を持つ角度アプリを持っています。 '編集'モードでは、ユーザーは入力項目の編集、オプションの変更、チェックボックスのチェックなどを行うことができます。 '読み取り'モードでは、この値のみを読み取ることができます。管理者だけがページ上の何かを編集でき、他の人はコンテンツを読むことができます。Angularjs: '編集可能'モードと '読み取り専用'モードの要素が分かれていますか?
私がしたいのは、ウォッチャー全体の数を減らすために、スクリプトに平文span
またはdiv
要素を読み取り専用モードで使用させることです。実装を賢明にすると、私はいつも以下のように2つの別々のhtml 'ブロック'を定義する必要があります。
exampleInput.tpl.html
注:私はウォッチャーの数を減らすために、読み取り専用モードでDOMからの入力要素を削除したいので、私はここにng-if
を使用しています。
<!-- editable mode. -->
<input
ng-if="!$ctrl.isReadOnly()"
ng-model="$ctrl.value"
value="$ctrl.value"
/>
<!-- read only -->
<span
ng-if="$ctrl.isReadOnly()"
ng-bind="$ctrl.value">
</span>
exampleInput.comp.js
// The example-input component
(function(){
"use strict";
angular
.module("exampleInput", ["ngSanitize", "userSettings"])
.component("exampleInput", {
templateUrl: "exampleInput.tpl.html",
bindings: {
value: "="
},
transclude: true,
controller: ["$scope", "userSettings", function($scope, userSettings){
var ctrl = this;
ctrl.isReadOnly = userSettings.isReadOnly;
}
]
});
}());
アプリケーション:
<qa-input value="value.foobar">
</qa-input>
私の質問:
もっと良い方法がありますか?私はちょうど単一の入力要素を持つことができ、 '無効'モードでスタイリングを制御するCSSを使用することができますが、これは私の主な理由は、この方法を行うためのウォッチャーを削除しません。私はAngularにはかなり新しいので、アドバイスをいただければ幸いです。
私は角度1.5.xを使用しています。
[これと同じような](https://vitalets.github.io/angular-xeditable/#edit-disabled)を使用できますか?すでに 'enable/disable'と他の多くの機能があります。私は自分のアプリケーションの1つに使っていますが、時間を節約するのに大変です。 – ODelibalta
ああ、私はこれも存在していたとは思わなかった!それを指摘してくれてありがとう! – adilapapaya