控制器在离开时无法保留范围

时间:2018-07-16 20:10:27

标签: javascript angularjs service controller

我在这里需要帮助。两个问题。

  1. 我的服务最多可以返回三个不同的响应,具体取决于用户单击的按钮。并且,如果用户查看选项A,然后选择选项B或C,则会调用相同的服务以等待响应。但是,如果用户选择选项A ...然后转到选项B,然后再次返回选项A,它将强制执行新的HTTP $响应...但是我正尝试返回选项/响应A的缓存视图。我可以在服务或控制器中存储每个响应,以便当用户重新选择该选项时,它从存储/缓存的响应中提取。唯一的时间是应该重新响应,如果数据点已更改。

  2. 如果用户离开控制器并返回,则$ scope被清除,它必须再次调用服务(即使数据点没有更改)。我希望该服务保留响应,就像上面的#1一样。

1 个答案:

答案 0 :(得分:3)

我建议使用缓存机制,而不是专注于保留SCOPE或ROOTSCOPE变量值的方法。

您可以参考 https://docs.angularjs.org/api/ng/service/$cacheFactory 这将为您提供足够的详细信息。

我可以建议这些步骤:

1。第一次用户访问服务时(针对每个选项A,B,C)设置缓存,并使用KEY,VALUE对映射将每个响应存储在缓存中。 伪代码:

var cache = $cacheFactory('cacheId');
cache.put("ServiceCallForOption-A", "value");
cache.put("ServiceCallForOption-B", "another value for B");
cache.put("ServiceCallForOption-C", "another value for C");
  1. 每次都再次对它们发出下一个请求时,请从缓存中获取它,而不是从您的控制器中获取它。 伪代码:cache.get(key);

希望这会有所帮助。