我一直在阅读有关angularjs中的服务或工厂,但是我在寻找最佳解决方案时遇到了一些麻烦,基本上我需要将一些数据从一个控制器传递到另一个控制器,它是一个布尔值,但我不想创建一个只为一项小任务服务。
我认为对于一份小工作来说,这没什么意义。在这种情况下,angularjs还有其他方法吗?我可以在控制器之间传递小数据。我一直在寻找angularjs文档,但无法找到最佳解决方案。
答案 0 :(得分:0)
Use $rootScope.emit()
控制器A中的
$rootScope.emit('toggle',true);
控制器B中的
$rootScope.on('toggle', function(value){
})
答案 1 :(得分:0)
对于小件物品,您可以使用参数。最终用户,他们看起来像URL字符串的一部分。这可以使用和不使用ngRoute。看看this stack question。
对于不适合向最终用户显示的更复杂的数据或数据,请使用服务或工厂。看起来像矫枉过正,但它为您提供了更大的灵活性。
$ broadcast / $ on模式变得混乱,难以排除故障。
答案 2 :(得分:0)
如果是父/子控制器,您可以使用$ scope或$ emit / $ broadcast传输您的值。
如果控制器位于同一级别(兄弟姐妹),您可以使用包装器控制器来存储共享数据。
如果您认为对其他任务有类似的要求,您可以考虑服务,并使其抽象和可重用(某种帮助)。
无论如何,你没有提供足够的信息,在我们看到真实的例子之前可能会有很多解决方案。
答案 3 :(得分:0)
如果您的控制器具有子父关系(在任何级别),那么您可以尝试使用$ broadcast或$emmit
来抛出数据,使用$ on来捕获事件。否则将$rootScope
注入其中一个并在$broadCast
的监视器上触发$rootScope
,或在$emmit
的监视器上触发$scope
并使用{捕获该数据相应地{1}}。