我希望每个人都做得很好。
我有一个带有几个视图的控制器。我想要的是当我从列表A 中删除一些通知时,应该更新列表B 的模型。
一种方法是我创建一个服务并与两个控制器共享列表模型。但还有其他最佳方式吗?
答案 0 :(得分:0)
如您所述,您可以通过服务或工厂共享数据。或者,您可以使用$rootScope.$broadcast
事件在控制器的实例之间进行通信。
另一种方法是将状态置于父作用域中,然后通过组件/指令上的属性将该状态向下传递给其子级。 E.g。
<my-first-directive shared-data="sharedData"></my-directive>
<my-second-directive shared-data="sharedData"></my-directive>
这样,您可以使接收指令/组件无状态。
答案 1 :(得分:0)
使用RootScope变量和函数不是专业的
如果两个视图的代码不多,则可以为两个视图使用一个控制器。
答案 2 :(得分:0)
我想,最好的方法是不要为不同的组件创建两个相同的视图。至于我,更好的做法是使用角度路由,因此您可以通过不同的路径使用一个状态:
$stateProvider.state("my_state", {
url: "/myView",
templateUrl: "/views/my-view.html",
controller: "MyCtrl"
});
P.S。不要将$rootScope
用于此目的,这不是好习惯!)
答案 3 :(得分:0)
尝试这样做。
.when('/company/ticket/log/:company_id', {
templateUrl: 'views/company/company_ticket_log.html?v=' + CONFIG.VER,
data: {
authorizedRoles: [USER_TYPES.LOGINUSER]
}
});
当您尝试这样做时,在url中使用列表数据,列表数据可以在共享控制器中,如const.js