在$ scope中定义AngularJS变量时使用对象名称

时间:2014-08-15 13:19:30

标签: javascript angularjs angularjs-scope angularjs-controller

假设我们在AngularJS中有一个NameController。你可以在那里定义如下变量:

this.name = 'Joe';

或者:

$scope.name = 'Joe';

我总是喜欢使用对象表示法来调用所有变量:

<form ng-controller="NameController as nameCtrl">
  <input type="text" ng-model="nameCtrl.name">
</form>

仅当我在控制器中使用“this”表示法时才有效。当我使用$scope时,我必须在没有nameCtrl的情况下调用'name'。使它工作。

当然,我在这里缺少一些非常基础的基础知识,但在做了一些研究之后,我仍然陷入困境。如何在HTML代码中保留尽可能多的对象命名?

2 个答案:

答案 0 :(得分:1)

您应该一次只使用一种方法,请参阅此链接的更多详细信息 https://docs.angularjs.org/api/ng/directive/ngController

  

下面列出了两种不同的声明风格:

     
      
  • 使用以下方法将方法和属性直接绑定到控制器上:ng-controller =“SettingsController1 as settings”
  •   
  • 将$ scope注入控制器:ng-controller =“SettingsController2”
  •   

答案 1 :(得分:0)

Angular js有一个功能ControllerAs。这就是你现在正在使用的。您只是将nameCtrl对象引用到NameController对象。您正在使用控制器对象的克隆访问名称值。想象一下,this只是指向$scope

的指针

这是一个很好的技术介绍:Angular Controllers

如果您想在任何地方使用对象,可以使用Angular Service注入控制器,这样您就可以在每个控制器中轻松调用服务中的任何对象。