angularjs – Angular:我应该使用这个还是$scope

前端之家收集整理的这篇文章主要介绍了angularjs – Angular:我应该使用这个还是$scope前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有两种模式用于访问控制器函数:“this”和“$ scope”。
我应该使用和什么时候?我理解“this”设置为控制器,“$ scope”是视图的作用域链中的一个对象。但是使用新的“Controller as Var”语法,你可以很容易地使用。所以我要问的是什么是最好的,什么是未来的方向?

例:

>使用“this”:

function UserCtrl() {
  this.bye = function() { alert('....'); };
}

<body ng-controller='UserCtrl as uCtrl'>
  <button ng-click='uCtrl.bye()'>bye</button>

>使用$ scope

function UserCtrl($scope) {
    $scope.bye = function () { alert('....'); };
}

<body ng-controller='UserCtrl'>
    <button ng-click='bye()'>bye</button>

我个人认为this.name更容易在眼睛和更自然比较其他Javascript OO模式。

建议好吗?

两者都有自己的用途。首先,一些历史…

$ scope是“经典”技术,而“控制器”是更新近的(从版本1.2.0正式,虽然它出现在不稳定的预发布之前)。

两个都工作得很好,唯一错误的答案是混合他们在同一个应用程序没有明确的理由。坦率地说,混合它们将起作用,但它只会增加混乱。所以选择一个和滚动它。最重要的是要保持一致。

哪一个?这取决于你。还有更多的例子,有$范围,但“控制器作为”也在收拾蒸汽。这个比那个好吗?这是有争议的。那么你怎么选择呢?

安慰

我喜欢“控制器为”,因为我喜欢隐藏$范围,并通过中介对象将控制器中的成员暴露给视图。通过设置这个*,我可以暴露我想从控制器暴露到视图。你也可以用$ scope来做,我只是喜欢使用标准的JavaScript。事实上,我编码它这样:

var vm = this;

vm.title = 'some title';
vm.saveData = function(){ ... } ;

return vm;

这对我感觉更清洁,使得很容易看到暴露在视图中的东西。注意我命名我返回的变量“vm”,它代表viewmodel。这只是我的约定。

使用$ scope我可以做同样的事情,所以我不添加或减少与技术。

$scope.title = 'some title';
$scope.saveData = function() { ... };

所以它由你决定。

注射

使用$ scope我需要注入$ scope到控制器。我不需要这样做与控制器,除非我需要它为某些其他原因(如$广播或手表,虽然我尽量避免在控制器中的手表)。

更新
我写了这篇文章关于2个选择:
http://www.johnpapa.net/do-you-like-your-angular-controllers-with-or-without-sugar/

猜你在找的Angularjs相关文章