Angular中的$ scope绑定

时间:2015-06-11 08:48:44

标签: angularjs

如果你有一个控制器什么是数据绑定的首选方法,多个较小的或一个大对象,例如:

$scope.username = 'John Doe';
$scope.email = 'me@me.com';
$scope.city = 'Amsterdam';

var user = {};
user.username = 'John Doe';
user.email = 'me@me.com';
user.city = 'Amsterdam';

$scope.user = user;

1 个答案:

答案 0 :(得分:2)

我会选择第二个,来自angularjs wiki

  

范围继承通常是直截了当的,你通常不会   甚至需要知道它正在发生......直到你尝试双向数据绑定   (即表格元素,ng-模型)到基元(例如,数字,字符串,   boolean)在子范围内从父范围定义。它   没有像大多数人期望的那样工作。怎么了   是孩子范围得到自己的隐藏/阴影的属性   同名的父属性。这不是AngularJS的内容   做 - 这就是JavaScript原型继承的工作原理。新   AngularJS开发人员通常没有意识到ng-repeat,ng-switch,   ng-view和ng-include都创建了新的子范围,所以问题就出现了   经常出现涉及这些指令的时候。 (见这个例子   为了快速说明问题。)

     

通过遵循以下内容,可以轻松避免使用原语这个问题   "最佳实践"总是有一个'。在您的ng模型中 - 观看3   分钟值得。 Misko演示了原始绑定问题   NG-开关。

     

有一个'。'在你的模型中将确保原型继承   在游戏中。所以,使用

float
  

如果您确实需要/需要使用原语,则有两种解决方法:

     

在子范围中使用$ parent.parentScopeProperty。这会阻止   子范围来自创建自己的属性。定义一个函数   父范围,并从子系统调用它,传递原语   价值高于父母(并非总是可能)

https://github.com/angular/angular.js/wiki/Understanding-Scopes