我使用角度声明而不使用或注入$scope
var,但使用this.
声明
var app = angular.module('myApp', []);
app.controller('myCtrl', myCtrlFunction);
function myCtrlFunction() {
this.myUrl = "This is myUrl content";
}

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myApp" ng-controller="myCtrl as vm">
<p>Here I put my var myUrl:</p>
<h3>{{vm.myUrl}}</h3>
</div>
&#13;
它运作正常,但我无法弄清楚如何访问&#39; $ location&#39;所以这在缩小之后起作用
var app = angular.module('myApp', []);
app.controller('myCtrl', myCtrlFunction);
function myCtrlFunction() {
this.myUrl = $location.absUrl();
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myApp" ng-controller="myCtrl as vm">
<p>Here I put my var myUrl:</p>
<h3>{{vm.myUrl}}</h3>
</div>
&#13;
我是否需要更改声明myCtrlFunction()
的内容的方式?
答案 0 :(得分:0)
你需要注入$ location。
var app = angular.module('myApp', []);
app.controller('myCtrl', myCtrlFunction);
function myCtrlFunction(**$location**) {
this.myUrl = $location.absUrl();
}
由于您实际上并未使用$ scope关键字,因此您使用了以前的版本。但是对于$ location,你专门使用它,所以你需要注入它。
答案 1 :(得分:0)
是的,因为它有依赖注入。在当前设置中,控制器要求$ location为全局变量。此外,您需要为参数名称提供一个包含字符串值的数组,因此在通过缩小算法更改参数后,angular仍然知道要注入的内容。
因此,请使用以下任一设置:
var app = angular.module('myApp', []);
app.controller('myCtrl', ['$location', myCtrlFunction]);
function myCtrlFunction($location) {
this.myUrl = "This is myUrl content";
}
或:
var app = angular.module('myApp', []);
app.controller('myCtrl', myCtrlFunction);
function myCtrlFunction($location) {
this.myUrl = "This is myUrl content";
}
// tell angular what parameters are expected
myCtrlFunction.$inject = ['$location'];