包含其他不自动更新字符串的字符串
String containing other String not updating automatically
为什么myCtrl。当我更新myCtrl.name?
angular.module('MyApp', [])
.controller('MainController', [function(){
var mCtrl = this;
mCtrl.name = '';
mCtrl.greeting = 'Greetings ' + mCtrl.name;
}]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="MyApp" ng-controller="MainController as mCtrl">
<input type="text" ng-model="mCtrl.name">
<h3 ng-bind="mCtrl.greeting"></h3>
</div>
我认为当我更新mCtrl.name属性时,它会运行一个$digest循环,然后更新mCtrl。视图中的问候?
这不是因为angular,而是因为JavaScript。当你分配你的greeting
-string, name
的值被复制,而不是引用。所以即使name
变了,greeting
还是不变。简短的清晰示例:
var a = 'Foo';
var b = a + 'bar'; //b = 'Foobar', there is no reference to a
b == 'Foobar'; //This is true
a = 'Lalelu';
b != 'Lalelubar'; //b is still 'Foobar'
在你的模板中创建一个表达式来获得想要的行为:
<h3>Greetings {{mCtrl.name}}</h3>
工作好。下面试试。
angular.module('MyApp', [])
.controller('MainController', [function(){
var mCtrl = this;
mCtrl.name = '';
mCtrl.greeting = 'Greetings ' + mCtrl.name;
}]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="MyApp" ng-controller="MainController as mCtrl">
<input type="text" ng-model="mCtrl.name">
<h3>Greetings {{mCtrl.name}}</h3>
</div>
相关文章:
- 以字符串形式读取量角器测试中的更新输入
- 将字符串转换为数组使用javascript更新一个值并返回一个字符串
- 将鼠标悬停在字符串上并更新预览
- 如何以良好的性能更新修改后的字符串
- 在jQuery中更新base64图像字符串时未进行图像刷新
- 如何将一些参数从javascript接收响应字符串 asp.net 页面并更新html文档
- JS 函数不更新 HTML 字符串
- 如何在 JavaScript 中设置/更新字符串对象的值
- SAPUI5/OPENUI5:将字符串绑定到 JSON 模型并自动更新更大的字符串(读取 [对象%20Object])
- 更新 Javascript Array 并再次字符串化
- 使用正则表达式更新字符串
- 如何使用特殊字符(%,等)将字符串从文本区域更新到mysql表
- 更新文档,但出现错误:对于未定义的值,强制转换为字符串失败
- MongoDB(通过Meteor)在更新集合文档时将对象属性视为字符串
- jQuery.attr() 不更新 HTML 字符串
- 使用 jQuery 更新 XML 字符串
- MySQL UPDATE只更新整数,不更新字符串
- 缓存——一次用查询字符串更新多个js文件
- 基于另一个字符串更新/添加字符串值
- 从JS "字符串"更新值属性