一个控制器及其在模板依赖 [英] a controller and its dependencies in a template
本文介绍了一个控制器及其在模板依赖的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个通用的列表视图控制器:
I have a controller for a generic list view:
(angular
.module('app.controllers')
.controller('ItemListContr', [
/*****/ '$scope', 'ItemData',
function($scope, ItemData,) {
...
}
])
);
其中,的ItemData code>不是现有组件的名称,但我注入由路由控制器的服务的占位符名称:
where ItemData
is not the name of an existing component, but a placeholder name for a service that I inject into the controller from a route:
(angular
.module('app', ['app.controllers', 'app.services'])
.config([
/******/ '$routeProvider',
function ($routeProvider) {
$routeProvider
.when('/books', {
controller: 'ItemListContr',
resolve: {ItemData: 'BookData'},
templateUrl: 'book-list.html'
})
.when('/magazines', {
controller: 'ItemListContr',
resolve: {ItemData: 'MagazineData'},
templateUrl: 'magazine-list.html'
})
}])
);
其中, BookData code>和
MagazineData code>在
app.services $ C定义的服务$ C>模块。
我还需要使用模板内该控制器:
I also need to use this controller inside a template:
<span ng-controller="ItemListContr">...</span>
但我需要提供数据源的ItemData code>它。我不知道如何从一个模板做到这一点。
but I need to supply the data source ItemData
for it. And I do not know how to do it from a template.
推荐答案
您可以使用 $注射器
按名称来获得你的服务在控制器中。
You can use $injector
to get your service by name in the controller.
这样的:
var myApp = angular.module('myApp', []);
myApp.value('ItemData', 'BookData')
myApp.service('BookData', function () {
return {
test: function () {
alert("Test called in BookData!");
}
}
});
myApp.controller('ItemListContr', function ($scope, $injector, ItemData) {
var myService = $injector.get(ItemData);
myService.test();
});
这里是一个小提琴
这篇关于一个控制器及其在模板依赖的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文