Angularjs 我可以创建一个直接插入控制器或组件的服务吗

Angularjs 我可以创建一个直接插入控制器或组件的服务吗,angularjs,angular-services,Angularjs,Angular Services,我可能错了,但我的印象是我可以访问我的服务并让它直接显示数据 也就是说,我可以注入我的服务,并从多个组件对其进行读/写访问,这很容易做到,但如果我想显示服务数据,我需要将其复制到控制器,让$scope/vm/this将其挂接到HTML模板中。但这意味着在DOM级别发生的任何更改都需要监视/触发,以告知服务它已更改,我希望这是自动的 我基本上是想节省时间,问是否可以做到,这是我一直很好奇的事情,以前有没有人设置好并让它工作?请您详细说明一下好吗?在这种情况下,您可以像往常一样创建服务,但随后在ru

我可能错了,但我的印象是我可以访问我的服务并让它直接显示数据

也就是说,我可以注入我的服务,并从多个组件对其进行读/写访问,这很容易做到,但如果我想显示服务数据,我需要将其复制到控制器,让$scope/vm/this将其挂接到HTML模板中。但这意味着在DOM级别发生的任何更改都需要监视/触发,以告知服务它已更改,我希望这是自动的


我基本上是想节省时间,问是否可以做到,这是我一直很好奇的事情,以前有没有人设置好并让它工作?请您详细说明一下好吗?

在这种情况下,您可以像往常一样创建服务,但随后在
run
方法处将其分配给
$rootScope
属性(例如
service
),这样您就可以通过
service.name
service.test
文本在模板上无限制地使用它,因为所有
$scope
都是从
$rootScope
继承的。此外,您不需要将服务注入特定控制器,您可以通过模板立即使用它:

var-app=angular.module('app',[]);
app.factory('myservice',function(){
返回{
测试:函数(){
console.log(this.name);
},
名字:“汤姆”
};
}).controller('ctrl',函数($scope,myservice){
$scope.local='from local ctrl';
$scope.serviceName=函数(){
返回myservice.name;
}
})
app.run(函数(myservice,$rootScope){
$rootScope.service=myservice;
})

{{serviceName()}}




您能否创建一个示例小提琴来向我们展示您试图实现的目标?这看起来确实像是我想知道的,我唯一关心的是您使用的是rootscope,我的印象是,在任何情况下,我们都不应该使用rootscope。否?@BaneStar007,如果您承认您的问题中描述的行为,您根本不应该关心
$rootScope
。因此,如果我翻译我认为您的说法,那么我要问的是代码气味(坏习惯),因此您的解决方案也可以接受,它使用了坏习惯?@BaneStar007,否,“坏”或“好”实践是一个非常主观的概念,在这种情况下,我不能断言任何东西,因为,至少,我没有您的应用程序的完整信息和要求。可能是你想要的行为和我的解决方案的气味,可能不是,它们正是你需要的,你应该自己决定这个事实。您的需求足够独特,但可能是必要的,因此在这种情况下使用
$rootScope
可能是合理的。