我目前有一家工厂看起来像这样:
export function PageFactory() {
var title = 'default';
return {
title: function() { return title; },
setTitle: function(newTitle) { title = newTitle }
};
}
在控制器中,我正在注射工厂,如:
constructor(private $scope:IMainScope, $rootScope, $window, $route, Page) {
Page.setTitle('home');
}
现在我想在视图中显示变量,例如{{ Page.title }}
,但这不起作用,只有当我注入工厂并将标题指向控制器中的变量时:
constructor(private $scope:IMainScope, $rootScope, $window, $route, Page) {
$scope.title = Page.setTitle('home');
}
并显示变量,如:{{ title }}
,但我希望能够这样做而不这样做。
答案 0 :(得分:0)
您可以执行$scope.Page = Page;
指向工厂并使用{{ Page.title }}
答案 1 :(得分:0)
对于基于类的编码样式控制器,首选语法。在目前的指导方针中,$scope
的使用仅限于必不可少的操作(观察者和事件)。
考虑到controllerAs
是$ctrl
,它是
constructor(..., private Page) {}
和
{{ $ctrl.Page.title() }}
如果允许将整个服务公开以供查看,它总是取决于具体情况。