我现在开始围绕Angular,我正在努力解决两件事:
第一个问题: 我有一个控制器'AboutCtrl',它使用服务'Abstract'中的变量。现在我要做的是在这个服务中设置一些基本变量,如:'mobileMenuOpen'。
现在我想要的是'AboutCtrl'使用'Abstract'中的值,现在我一直在搜索,我发现这样做:
constructor (private $scope: IAboutScope, $rootScope, Abstract) {
console.log(Abstract);
$scope.mobileMenuOpen = Abstract.mobileMenuOpen;
}
现在我想知道的是,有没有办法自动继承所有这些变量?
第二个问题: 有没有办法在view / index.html中显示“抽象”服务中的变量?
示例:在我的about视图中我想显示mobileMenuOpen的值,现在当我在AboutCtrl中继承变量时如上所示它可以工作,但是如何在没有继承的情况下执行此操作?
我已经做过一些关于最佳实践的研究,并且使用服务/工厂似乎是最佳实践,如果不是其他一些例子将不胜感激。
答案 0 :(得分:1)
假设您的服务如下:
.service('abstract', function abstract(){
this.mobileMenuOpen = false;
this.someMethod = function(){
//do the magic
return 'cowabunga';
};
})
如果您通过引用将服务分配给$ scope:
$scope.myAbstract = abstract
然后,您的所有服务价值都会分配到myAbstract
,并且也可以在模板中访问,也会被双向绑定
<p> Is the menu open: {{ myAbstract.mobileMenuOpen }} </p>
<p> {{ myAbstract.someMethod() }} was the ninja turtles war cry! </p>
分配如
$scope.mobileMenuOpen = abstract.mobileMenuOpen;
将按值分配,因此您稍后在服务中所做的任何更改都不会对$scope.mobileMenuOpen