2016-12-01 50 views
0

我现在有1个工厂,看起来像这样:显示工厂变量没有控制器继承

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

你可以做$scope.Page = Page;应该指向工厂,并与{{ Page.title }}

+0

你有点失败的目的,但我想这是唯一的方法,谢谢! – LVDM

+0

@LVDM通过您的描述,它似乎是你想要的。你能详细阐述一下你的目标吗?我可能会提供一个更好的答案 – taguenizy

0

访问鉴于对于基于类的编码风格controllerAs语法是首选。在目前的准则中,$scope的使用仅限于不可或缺的操作(观察者和事件)。

考虑到controllerAs$ctrl,它是

constructor(..., private Page) {} 

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

它总是依赖于特定的情况下,如果是可以受理的,露出整个服务看和不看。