2013-11-28 97 views
1

也許棘手的標題...AngularJs一個控制器爲多個DOM /範圍

例如,讓我們使用谷歌地圖Api v3。

我有一些JSON對象的數組,其中包含各個城市的座標和信息。 如果我想爲所有InfoWindow內容創建一個控制器(每個內容的邏輯相同,但只有數據不同),該怎麼辦?

主要觀點:在每個InfoWindow中,我想「溝通」每個位置的信息。所以我想擁有一個Controller並構建多個$ scope實例。

我可以通過父控制器綁定控制器插入信息窗口內容加載模板有:

$con = $compile(HTML)($scope); 

然後推動$ CON [0]作爲內容到信息框(或窗口)的內容。 其中HTML可以是例如:

<div ng-controller="CustomCtrl"> 
    {{city().name}} 
</div> 

的問題是如何可以推自定義變量/對象CustomCtrl? 該變量可以是任何。在架構邏輯結構將是相同的,但從技術上說,必須是各種對象。

我試着這樣做:

var content = $con[0].copyNode(false); // or true 
content.customVariable = <Anything here>; 
var infobox = new InfoBox({content: content,...}); 

,我已經由$元素[0] .customVariable訪問在 「CustomCtrl」 沒什麼。

我如何在AngularJS中解決這個問題? 謝謝!

回答

0

呃......我想通了我自己。

我的任務必須做的第一件事是,我必須每次爲每個標記編譯, 之後,當我初始化InfoBox(-Window does not`t問題)我得到該內容實例。

,然後我可以確切地知道該信息框內容HTML內容,如DOM元素,必須是唯一的實例,不是同一個

var elem = angular.element(city.infobox.getContent()); 
elem.scope().customVariable = <Anything here> 

這customVariable將可以訪問,然後在「 CustomCtrl」代碼)

它是等作爲結合各NG-重複‘項目中的項目’的控制器:

<li ng-repeat="item in items" ng-controller="ItemCtrl"> 
    {{item.name}} 
</li> 

每個將在ItemCtrl封閉物,單獨的$範圍,item可以accesable有:

$scope.item.any_param_or_fn(); 

但在我的例子,我手動創建的所有項目,所以我必須這樣做手工綁定數據。

相關問題