Angular:当需要没有$ scope的控制器时?

时间:2016-04-05 14:03:07

标签: angularjs

参见代码

<div ng-app="myApp" ng-controller="ctrlCarLists as cars">
<button ng-click="cars.showCars()">
Cars
</button>

<button ng-click="alert(cars.data)">
Test
</button>
</div>


var app = angular.module('myApp', []);
app.controller("ctrlCarLists", function () {

this.data = 'hello';
this.showCars = function () {
    alert("Ford, Toyata, Mercedes");
    };
});

我是棱角分明的新人,所以当人们不喜欢在控制器中拥有$ scope时,我无法理解。所以当人们创建没有范围的控制器时,请告诉我或向我展示一些例子。

ctrlCarLists作为汽车的含义是什么?

很多人可能会说这个代码ctrlCarLists as cars我们正在创建控制器的实例以访问控制器的属性但是当我们使用$ scope时,也会创建控制器实例。

请帮助我理解..

感谢

2 个答案:

答案 0 :(得分:3)

这被称为'控制器为'模式。有关详情,请查看thisthis链接。

答案 1 :(得分:2)

您可以将此参考变量,只需看下面的代码

$compile(...)

并将您的HTML更改为此

var app = angular.module('myApp', []);
  app.controller("ctrlCarLists", function () {
  var self = this;

 self.data = 'hello';
 self.showCars = function () {
   alert("Ford, Toyata, Mercedes");
  };
});

'this'将是控制器侧面的一个对象。您可以通过写{{cars.data}}

查看数据

在你的例子中      <div ng-app="myApp"> <div ng-controller="ctrlCarLists as cars"> <button ng-click="cars.showCars()"> Cars </button> </div> </div> self.showCars的函数smiler,$scope.showCars smiler到$scope.showCars变量可以在控制器中访问。