AngularJS 中的 "var vm = $scope.vm = {}" 怎么理解?
How can I understand like this "var vm = $scope.vm = {}" in AngularJS?
当我阅读angularJSapi时,我发现代码是这样的:
myApp.controller('MyController', ['$scope', function($scope) {
var vm = $scope.vm = {name:'savo'};
}
]);
这个多重赋值看起来很容易理解。
但是当我这样编码时:
myApp.controller('MyController', ['$scope', function($scope) {
var vm = $scope.vm = {name:'savo'};
vm.age = 18;
}
]);
而 HTML 是这样的:
<div ng-controller="MyController">
<pre>{{vm}}</pre>
<pre>{{vm.name}}</pre>
<pre>{{vm.age}}</pre>
</div>
此处浏览器中的结果:
这是我的问题:
控制器给vm
一个属性age
,为什么$scope
中的vm
也有?
当我使用本机 JavaScript 时,不会发生这种情况。
我也可以把两个vm
改成不同的名字,不会有任何改变。
我是 angularJS 的新手,这让我很困惑,谢谢你的帮助!
对了,angular为什么用vm
这个名字,vm
是不是指某些单词的缩写?
Here is my question: The controller give the vm a attribute age, why the vm in the $scope has it too?
因为变量vm
和$scope.vm
指向同一个对象。由于两者是同一个对象,当您更改一个添加新的 属性 时,秒数也会改变。
When I use native JavaScript, this can not happen.
你在这里有点困惑。这是典型的行为,因为 javascript 中的所有非基本类型(对象、函数、数组等)都是通过引用传递的。
当我阅读angularJSapi时,我发现代码是这样的:
myApp.controller('MyController', ['$scope', function($scope) {
var vm = $scope.vm = {name:'savo'};
}
]);
这个多重赋值看起来很容易理解。 但是当我这样编码时:
myApp.controller('MyController', ['$scope', function($scope) {
var vm = $scope.vm = {name:'savo'};
vm.age = 18;
}
]);
而 HTML 是这样的:
<div ng-controller="MyController">
<pre>{{vm}}</pre>
<pre>{{vm.name}}</pre>
<pre>{{vm.age}}</pre>
</div>
此处浏览器中的结果:
这是我的问题:
控制器给vm
一个属性age
,为什么$scope
中的vm
也有?
当我使用本机 JavaScript 时,不会发生这种情况。
我也可以把两个vm
改成不同的名字,不会有任何改变。
我是 angularJS 的新手,这让我很困惑,谢谢你的帮助!
对了,angular为什么用vm
这个名字,vm
是不是指某些单词的缩写?
Here is my question: The controller give the vm a attribute age, why the vm in the $scope has it too?
因为变量vm
和$scope.vm
指向同一个对象。由于两者是同一个对象,当您更改一个添加新的 属性 时,秒数也会改变。
When I use native JavaScript, this can not happen.
你在这里有点困惑。这是典型的行为,因为 javascript 中的所有非基本类型(对象、函数、数组等)都是通过引用传递的。