为什么在这种情况下,setViewValue() 不会更新所有位置的值
Why setViewValue() is not updating values on all places in this case?
index.html
是:
<!DOCTYPE html>
<html ng-app="myApp">
<head>
<script src="js/angular.js" type="text/javascript"></script>
<script src="js/app.js" type="text/javascript"></script>
</head>
<body>
<div>TODO write content </div>
<input test type="text" ng-model="name" >
<h1>name: {{name}}</h1>
</body>
</html>
app.js
是:
var app = angular.module('myApp', []);
app.directive('test', function () {
return {
require: '?ngModel',
link: function ($scope, $element, $attr, controller) {
if (!controller) {
console.log("controller of ngModel not found");
return;
} else {
console.log("controller of ngModel found");
controller.$setViewValue('qwerty');
}
}
};
});
在上面的 link
函数示例中,我正在使用 DDO
中指定的选项访问ngModel
指令controller
require
。然后使用该对象,我正在更新 name
的值,这在index.html
内部<h1>name: {{name}}</h1>
更新,但在<input test type="text" ng-model="name">
内部index.html
内更新。为什么它在一个地方更新而不在另一个地方更新?
代码 @ plnkr.co
来自角度源:
同样重要的是要注意,
$setViewValue
不会调用 以任何方式$render
或更改控件的 DOM 值。如果我们愿意 以编程方式更改控件的 DOM 值,我们应该更新ngModel
范围表达式。
在此示例中,您可以: $parse($attr.ngModel).assign($scope, 'qwerty')
$setViewValue不会直接更新$modelValue,您需要在控制器上触发$render()
函数ngModel
该函数,该函数会将该$viewValue
传递给$modelValue
,因此您将在页面上获得绑定。
命令
app.directive('test', function () {
return {
require: '?ngModel',
link: function ($scope, $element, $attr, controller) {
if (!controller) {
console.log("controller of ngModel not found");
return;
} else {
console.log("controller of ngModel found");
controller.$setViewValue('qwerty');
controller.$render(); //to update $modelValue
}
}
};
});
分叉的普伦克
相关文章:
- 获取 HTML 5 音频控制文件位置并在不使用 id 选择器的情况下更新 src
- 使用 javascript 在网页上的同一位置更新数字
- Firebase:我可以将推送与多位置更新结合起来吗?
- 实时角度更新位置
- 一个在同一位置更新的PHP计算器
- 如何更新jQuery Mobile全局弹出窗口的位置
- 在谷歌地图上显示用户当前位置并更新
- 更新数据后保留D3图的位置
- Netsuite脚本-更新自定义可用数量字段//位置=仓库
- 使用PhoneGap和谷歌地图插件更新位置跟踪的标记位置
- 使用JavaScript/Jquery创建文本文件下载/更新到本地客户端机器中的特定位置
- 在不加载页面的情况下更新谷歌地图上的标记位置
- Ion.RangeSlider,滑块宽度和更新位置
- 在单击事件时更新主干模型,并在更改位置之前等待响应
- 更新标记位置 json Leaflet 和 WebGLEarth
- 如何更新位置不刷新谷歌地图使用javascript
- Firefox失败-使用文档后.写入和更新位置.哈希导致页面刷新
- History.back()不更新位置.在Chrome/FireFox中
- getCurrentPosition不更新位置
- 旋转函数不更新位置