AngularJS中的只读输入
Read only inputs in AngularJS
我在agularjs上有一些只读输入的问题。我有一些选择,通过脚本更改只读输入值。但是当我试图通过ng-model在表中输出这些值为{{ng-model}}时,它没有显示出来。
<select name="well" onChange="Update(this.value)" ng-model="well" required>
<option value="Well-01">Well-01</option>
<option value="Well-02">Well-02</option>
<option value="Well-03">Well-03</option>
</select>
<label>Region:</label>
<input type="text" name="region" value="South" ng-model="region" disabled>
<label>State:</label>
<input type="text" name="state" value="Oklahoma" ng-model="state" disabled>
<label>Field Office:</label>
<input type="text" name="office" value="Ringwood" ng-model="office" disabled>
小提琴:http://jsfiddle.net/NKyps/7/
它显示{{well}}当我改变它,但不显示输入。谢谢你的帮助。PS:如果有人知道如何使用默认选项(例如:well-01),那么当文档加载时输入将被填充?
我认为问题是这些属性在某些模型中没有绑定。当你使用{{variable}}时,angular期望它与某个模型绑定。
我在你的标签中添加了范围模型:
<form ng-controller="Sarapastrule" name="form">
</form>
检查:http://jsfiddle.net/NKyps/9/
就像Bart说的,你错过了AngularJS的基本概念,应该在http://docs.angularjs.org/tutorial上阅读AngularJS教程。
AngularJS是关于双向数据绑定的。因此,它负责更新DOM,而作为开发人员的您只需更新模型。像你以前那样访问输入字段的值属性,这不是你使用Angular的方式。我已经更新了你的jsFiddle到一个工作版本,但是你应该阅读教程来获得AngularJS背后的概念。
http://jsfiddle.net/BnqZS/1/正如你所看到的,你首先需要一个控制器来处理业务逻辑。在控制器中观察并更新模型。所以不用
if (choice == "Well-01") {
region.value = 'South';
state.value = 'Oklahoma';
office.value = 'Ringwood';
}
你实际上应该在你绑定到选项输入的模型上设置一个手表,并写入:
$scope.$watch('well', function(choice) {
if (choice == "Well-01") {
$scope.region = 'South';
$scope.state = 'Oklahoma';
$scope.office = 'Ringwood';
}
}
你是在angular之外操作并进行自定义DOM操作,这与angular.js的设计目的相反。我这里有一个更新过的小提琴
使用带有作用域的控制器来定义模型的值。
function ExampleController($scope) {
$scope.Update = function () {
if ($scope.well == "Well-01") {
$scope.region = 'South';
$scope.state = 'Oklahoma';
$scope.office = 'Ringwood';
}
if ($scope.well == "Well-02") {
$scope.region = 'North';
$scope.state = 'Montana';
$scope.office = 'Sidney';
}
if ($scope.well == "Well-03") {
$scope.region = 'North';
$scope.state = 'North Dakota';
$scope.office = 'Tioga';
}
}
$scope.well = 'Well-01';
$scope.Update();
}
你的设计的主要问题是,你试图维持2一致的模型,一个在javascript和另一个在dom。Angular.js擅长为你处理dom操作,所以你只需要担心更新你的模型。而不是尝试手动更新dom,只需构建视图,使其从模型生成自己,然后只允许自己更新javascript模型($scope变量)。
- 禁用与只读不适用于非交互式但值保持器输入
- 使用JS将输入设置为只读
- 点击提交按钮后,输入字段将变为(只读)
- 无法在IE中的输入字段上设置只读
- 为什么 react 将输入[类型=“文本”] 字段设为只读,除非我提供 onChange 回调
- 如何在只读输入字段上设置自定义有效性
- 在编辑输入 jQuery 后激活只读返回
- 设置只读属性以保持输入可编辑
- 将表单输入更改为在元素复制时只读
- 输入字段对用户只读,但仍可通过 DOM 进行编辑
- 防止在文本字段输入中键入,即使字段未禁用/只读
- HTML5/Javascript 输入只读状态在 IOS 上使用 XCode 滑动
- 如何在chrome浏览器中的输入字段中使用只读属性时启用光标移动
- 可选择 iOS Webkit 只读输入
- 如何在 ckeditor 对话框中使输入只读
- CSS/Javascript - 忽略只读输入以在表单中读取
- 如何将EventListener添加到只读输入中
- 如果输入错误,将文本输入保持为只读状态4秒
- 如何在Android股票浏览器中的只读输入字段上显示省略号
- 我如何在点击按钮时使一行ng重复中的输入只读