在没有控制器继承的情况下显示工厂变量

时间:2016-12-01 10:52:48

标签: javascript angularjs typescript

我目前有一家工厂看起来像这样:

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 }},但我希望能够这样做而不这样做。

2 个答案:

答案 0 :(得分:0)

您可以执行$scope.Page = Page;指向工厂并使用{{ Page.title }}

在视图中访问它

答案 1 :(得分:0)

对于基于类的编码样式控制器,首选语法。在目前的指导方针中,$scope的使用仅限于必不可少的操作(观察者和事件)。

考虑到controllerAs$ctrl,它是

constructor(..., private Page) {}

{{ $ctrl.Page.title() }}

如果允许将整个服务公开以供查看,它总是取决于具体情况。