我想知道 angularjs 中“Controller as”或“$scope”语法之间的主要区别是什么。
- 它们是否有任何性能影响,如果是,哪种语法更可取。
- “Controller as”语法肯定会提高代码的可读性,因为 Knockout.js 和其他 JavaScript 框架遵循相同的语法。
$scope 将提供范围继承,这有时会给我们带来奇怪的行为,例如
<div ng-controller="firstController"> ParentController: <input type="text" ng-model="parent"/> <div ng-controller="secondController"> ChildController: <input type="text" ng-model="parent" /> </div> </div> app.controller('ParentController', function ($scope) { $scope.parent = "parentScope"; }).controller('ChildController', function ($scope) { /*empty*/ });
a) 最初 child 将获得 parent 属性,当我们更新 parent child 时,它显示 'parentScope' 也会更新。但是,如果我们现在更改了 child 属性,则更新 parent 不会修改 child,因为它有自己的 scope 属性。
b) 如果我使用控制器作为语法更改子项也会更新父项。