多视图绑定相同的控制器?最佳方案?

时间:2016-10-04 07:46:13

标签: angularjs

我希望每个人都做得很好。

我有一个带有几个视图的控制器。我想要的是当我从列表A 中删除一些通知时,应该更新列表B 的模型。

enter image description here 最好的&针对此问题的优化解决方案?

一种方法是我创建一个服务并与两个控制器共享列表模型。但还有其他最佳方式吗?

4 个答案:

答案 0 :(得分:0)

如您所述,您可以通过服务或工厂共享数据。或者,您可以使用$rootScope.$broadcast事件在控制器的实例之间进行通信。

另一种方法是将状态置于父作用域中,然后通过组件/指令上的属性将该状态向下传递给其子级。 E.g。

<my-first-directive shared-data="sharedData"></my-directive>
<my-second-directive shared-data="sharedData"></my-directive>

这样,您可以使接收指令/组件无状态。

答案 1 :(得分:0)

1。您可以为列表视图共享rootcope变量。

使用RootScope变量和函数不是专业的

2。你可以为两个视图使用一个控制器。

如果两个视图的代码不多,则可以为两个视图使用一个控制器。

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