【问题标题】:Reusing directive with state between pages重用指令与页面之间的状态
【发布时间】:2015-05-11 17:18:42
【问题描述】:

我的 AngularJS 应用程序中有几个页面(使用 $routeProvider)。我创建了一个指令(包含一些允许在它们和输入上设置回调的按钮),它应该可以在这些页面之间重用,但是当从一个页面跳转到另一个页面时,该指令使用服务来保持其状态。

现在的问题是,如果您在第一页更改指令的状态,其他页面的状态将相同,因为它们都使用相同的服务。如何解耦?

我唯一想到的是这些指令应该有自己的 id,像这样:

<my-directive id="dirOnPageX"></my-directive>

所以我可以根据 id 将状态存储在服务中,但这需要我将 id 属性添加到我放入 HTML 的每个指令中。有没有更好的解决方案?

也许来自给定指令的一些独特的东西转换为一些哈希,然后它会被用作 id?但是,在指令中,什么可能是独特的和确定的?

【问题讨论】:

  • 为什么不将指令的状态存储在指令本身而不是服务中?

标签: angularjs


【解决方案1】:

我认为您应该将指令状态存储在范围而不是服务中,并且使用服务仅执行操作

它也允许您单独测试指令

希望这会有所帮助:)

【讨论】:

  • 如果我将状态存储在范围内,如果我跳转到另一个页面,范围/指令将被破坏,stackoverflow.com/questions/22714409/…
  • 嗯,是的,这不是你想做的吗?如果您想在每次使用指令时存储数据,那么如果不输入 id 就不可能,因为您需要确定您需要重新加载数据
  • 另一种方法是使用该服务将其保存并加载到控制器中,尽管您仍然需要一个 id 来识别它,如果您在每条路由中只使用一个指令,您可以使用它,尽管它会是一个模糊的逻辑,可能导致错误
猜你喜欢
  • 2023-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-28
  • 1970-01-01
相关资源
最近更新 更多