在每个控制器中调用数据与广播数据/将其发送到所有控制器



正如我所研究的,我们可以使用 $emit 将数据发送到所有父控制器,$broadcast将数据广播到所有子控制器,而我们可以使用 $on 来捕获从 $emit/$broadcast 发出/广播的数据。为了从外部 json 获取数据,我们使用 $http.get。

如果我们有多个控制器嵌套在一起,是建议在每个控制器中多次使用 $http.get 还是在父控制器中使用一次$http,然后将数据广播到存在的所有子控制器?或者,如果我们有一个单独的服务来处理可以在每个控制器中进一步使用的所有 $http.get 请求,会更好吗?

您可以在服务中创建一个函数,并在您想要像父子一样使用它时使用它。

**Service::**
function getData() {
// Get data from API and return.
}
**Controller 1**
function getRecord() {
// call service1.getData();
}
**Controller 2**
function getRecord() {
//  calll service1.getData();
}

无论选择哪个选项,都应从服务调用 API($http函数(。这使得它们可以重复使用。

话虽如此,在您的情况下,广播不是好主意。我会选择选项 #2。 此外,如果来自子控制器的所有请求的响应都相同,请尝试将首次调用的响应保存到服务中,然后重用它。

最新更新