Javascript 我怎么能这样理解;var vm=$scope.vm={}";在AngularJS?
当我阅读angularJS api时,我发现代码如下:Javascript 我怎么能这样理解;var vm=$scope.vm={}";在AngularJS?,javascript,angularjs,angularjs-scope,Javascript,Angularjs,Angularjs Scope,当我阅读angularJS api时,我发现代码如下: myApp.controller('MyController', ['$scope', function($scope) { var vm = $scope.vm = {name:'savo'}; } ]); myApp.controller('MyController', ['$scope', function($scope) { var vm = $scope.vm = {name:'savo'}
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;
}
]);
<div ng-controller="MyController">
<pre>{{vm}}</pre>
<pre>{{vm.name}}</pre>
<pre>{{vm.age}}</pre>
</div>
这种多重作业似乎很容易理解。
但当我这样编码时:
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;
}
]);
<div ng-controller="MyController">
<pre>{{vm}}</pre>
<pre>{{vm.name}}</pre>
<pre>{{vm.age}}</pre>
</div>
HTML是这样的:
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;
}
]);
<div ng-controller="MyController">
<pre>{{vm}}</pre>
<pre>{{vm.name}}</pre>
<pre>{{vm.age}}</pre>
</div>
{{vm}}
{{vm.name}
{{vm.age}
浏览器中的结果如下所示:
我的问题是:
控制器给vm
一个属性age
,为什么$scope
中的vm
也有这个属性?
当我使用本机JavaScript时,这不会发生。
我还可以将两个vm
更改为不同的名称,它不会改变任何东西
我是angularJS的新手,这让我很困惑,谢谢你的帮助
顺便问一下,为什么要使用名称vm
,vm
是指一些单词的缩写
我的问题是:控制器给vm一个属性age,为什么$scope中的vm也有它
因为变量vm
和$scope.vm
指向同一个对象。由于两者都是同一个对象,当您更改一个对象并添加新属性时,秒数也会更改
当我使用本机JavaScript时,这不会发生
你在这里有点困惑。这是典型的行为,因为javascript中的所有非原语(对象、函数、数组等)类型都是通过引用传递的 关于最后一个问题,VM代表视图模型。非常感谢^_^谢谢!我对本地JavaScript有点困惑,现在我明白了!O(∩_∩)O