我刚刚遇到一些代码,控制器中没有$ scope。
<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");
};
});
以上代码正在运行,但this.data
无法访问...为什么?单击按钮时可以访问showCars()。为什么不能this.data
无法访问?
当我们使用this
关键字在控制器中声明任何变量或函数时应该调用什么?它的行为类似于静态属性或类的功能吗?
jsfiddle link https://jsfiddle.net/tridip/z5wkzc0g/
答案 0 :(得分:1)
ng-controller="ctrlCarLists as cars"
&#34;汽车&#34;指的是你的控制器,&#34;这个&#34;也是指你的控制器。
ng-click="cars.showCars()"
当触发此功能时,它将引用&#34; showCars()&#34;控制器中的功能。
答案 1 :(得分:1)
正如Yury Tarabanko在评论中解释的那样,没有找到警报功能,原因是:
https://docs.angularjs.org/guide/expression#context
Angular不使用JavaScript的eval()来计算表达式。 相反,Angular的$ parse服务处理这些表达式。
Angular表达式无法访问全局变量 窗口,文档或位置。这种限制是故意的。它 防止意外进入全球国家 - 一个共同的来源 微妙的错误。
而是在调用的函数中使用$ window和$ location等服务 从表达。这些服务提供对全局变量的可模拟访问。
来源:
答案 2 :(得分:0)