将服务用于小型任务

时间:2016-06-29 16:10:31

标签: javascript angularjs

我一直在阅读有关angularjs中的服务或工厂,但是我在寻找最佳解决方案时遇到了一些麻烦,基本上我需要将一些数据从一个控制器传递到另一个控制器,它是一个布尔值,但我不想创建一个只为一项小任务服务。

我认为对于一份小工作来说,这没什么意义。在这种情况下,angularjs还有其他方法吗?我可以在控制器之间传递小数据。我一直在寻找angularjs文档,但无法找到最佳解决方案。

4 个答案:

答案 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}}。