ng-readonly

HTML 规范中没有要求浏览器保存属性的布尔值,如 readonly (这些属性存在则代表 true,不存在则代表 false)如果我们将一个 Angular 的插值表达式放入一个这样的属性中,那么当浏览器删除这个属性时, 我们将丢失绑定的信息。ngReadonly 指令解决了 readonly 属性的这个问题。这个补充的属性不会被浏览器移除 并且提供了一个永久可靠的地方来存储绑定信息。

指令信息

这个指令的执行优先级为100级

用法

用作属性:

<INPUT
  ng-readonly="expression">
...
</INPUT>

参数

参数 形式 详细
ngReadonly expression 如果表达式为真,则特殊的属性 readonly 将会被设置到元素上

例子

index.html

<label>Check me to make text readonly: <input type="checkbox" ng-model="checked"></label><br/>
<input type="text" ng-readonly="checked" value="I'm Angular" aria-label="Readonly field" />

protractor.js

it('should toggle readonly attr', function() {
  expect(element(by.css('[type="text"]')).getAttribute('readonly')).toBeFalsy();
  element(by.model('checked')).click();
  expect(element(by.css('[type="text"]')).getAttribute('readonly')).toBeTruthy();
});