如果我有以下angularjs代码路由提供程序,我怎么能通过依赖进入blaCtrl控制器呢?
非常感谢,
app.config(['$routeProvider', function($routeProvider) {
$routeProvider.when('/bla', { templateUrl: 'bla.html', controller: 'blaCtrl' });
试图获得类似
的内容'use strict';
app.controller('blaCtrl', function ($scope) {
$scope.mydata = ['111', '222', '333']; // how can I change this to be a method call to a dependency, i.e.
$scope.mydata = mydependency.getData(); // example what I need
});
更新
我的app文件看起来像这样 - 我还没有显示数据?
'use strict';
var app = angular.module('myApp', ['ngRoute']);
app.config(['$routeProvider', function($routeProvider) {
$routeProvider.when('/application', { templateUrl: 'partials/application.html', controller: 'myCtrl' });
$routeProvider.otherwise({ redirectTo: '/application' });
}]);
控制器
'use strict';
app.controller('myCtrl', 'myService', function ($scope, myService) {
debugger; // doesn't get hit?
$scope.stuff = myService.getStuff();
});
控制台错误
- I get this error in the console Error: [ng:areq] http://errors.angularjs.org/1.4.5/ng/areq?p0=applicationCtrl&p1=not%20a%20function%2C%20got%20string
答案 0 :(得分:1)
根据angular docs,有3种依赖注释方式。
在这种情况下,您的控制器防御应该如下所示:
'use strict';
app.controller('blaCtrl', ['$scope', 'mydependency', function ($scope, mydependency) {
$scope.mydata = mydependency.getData();
}]);
'use strict';
var blaCtrl = function ($scope, mydependency) {
$scope.mydata = mydependency.getData();
};
blaCtrl.$inject = ['$scope', 'mydependency'];
app.controller('blaCtrl', blaCtrl);
您在示例代码中使用的这个注入$scope
变量。不推荐,minificattion会破坏这样的代码。
'use strict';
app.controller('blaCtrl', function ($scope, mydependency) {
$scope.mydata = mydependency.getData();
});
你引用你的控制器不是用HTML而是在routeProvider
中的事实并没有任何区别。
答案 1 :(得分:0)
您可以从控制器内向控制器传递依赖关系。您已经注入了$ scope依赖项,如果您愿意,可以注入其他内容,例如$ location和$ rootScope。