2016-10-04 29 views
0

我希望大家都做得很好。多視圖綁定相同的控制器?最佳方案?

我有一個控制器與幾個意見。我想要的是,當我刪除列表A的一些通知,然後模型列表B應該更新。

enter image description here 最好的&這個問題的優化解決方案?

一種方法是我提供服務並與兩個控制器共享列表模型。但有沒有其他最好的方法?

回答

0

您可以像上面提到的那樣通過服務或工廠共享數據。或者您可以使用$rootScope.$broadcast事件在控制器的實例之間進行通信。

另一種方法是將狀態置於父作用域中,然後通過組件/指令上的屬性將該狀態傳遞給它的子對象。例如。

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

這樣您就可以使接收指令/組件無狀態。

0

1.您可以共享列表視圖的rootcope變量。

使用RootScope變量和函數不專業

2.你可以使用一個控制器,用於這兩種觀點。

如果兩個視圖的代碼不是很多,則可以爲這兩個視圖使用一個控制器。

+0

控制器是不是單身人士和兩個實例將不能夠訪問對方的範圍! – Amygdaloideum

+0

http://stackoverflow.com/questions/21919962/share-data-between-angularjs-controllers –

+0

是的,在那個例子中,控制器通過工廠共享數據,而不是通過具有相同控制器的相同實例。 – Amygdaloideum

0

我想,最好的辦法不是爲不同的組件創建兩個相同的視圖。對我來說,更好的做法是採用了棱角分明的路由,這樣你就可以通過不同的途徑使用一個狀態:

$stateProvider.state("my_state", { 
     url: "/myView", 
     templateUrl: "/views/my-view.html", 
     controller: "MyCtrl" 
    }); 

附:不要爲此使用$rootScope,這不是好習慣!)

+0

您沒有舉例說明如何在控制器實例之間共享數據模型。 – Amygdaloideum

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共享控制器

相關問題