我正在編寫一個應用程序,該應用程序在多個位置使用具有相同數據的同一個表。我創建了一個自定義指令,允許我重用此表。不幸的是,如果我在一個實例中編輯表,另一個實例不刷新。我如何鏈接這兩個,以便我對其中的任何編輯都顯示在另一箇中?AngularJS:在同一指令的多個實例之間共享範圍
回答
這聽起來像你主要想到它,困難的部分是讓你的數據變成一個形狀,其中的幻燈片可以共享視頻和照片。我建議在由Angular中的單獨工廠返回的共享數據訪問對象中執行此操作,而不是直接在範圍內執行此操作。如果有幫助,我有sample in Plunkr。
該示例具有綁定到共享數據的指令,作爲注入到兩個單獨作用域中的對象從工廠檢索。在你的情況下,你將不得不添加方法來從服務器檢索數據,並對其進行整形以供顯示。
testApp.factory("News", [function() {
var news = {
"stories": [
{"date": new Date("2015-03-01"), "title": "Stuff happened"},
{"date": new Date("2015-02-28"), "title": "Bad weather coming"},
{"date": new Date("2015-02-27"), "title": "Dog bites man"}
],
"addStory": function (title) {
var story = {
"date": new Date(),
"title": title
};
news.stories.push(story);
}
};
return news;
}]);
兩個控制器引用同一個工廠中的數據:然後
testApp.controller("FirstController",
["$scope", "News", function ($scope, news) {
$scope.news = news;
}]);
testApp.controller("SecondController",
["$scope", "News", function ($scope, news) {
$scope.news = news;
}]);
視圖中的數據傳遞到新聞列表指令,這兩個共享的數據,並保持相對指令啞。
<div ng-controller="FirstController">
<news-list news="news" title="'First List'"></news-list>
</div>
<div ng-controller="SecondController">
<news-list news="news" title="'Second List'"></news-list>
</div>
新聞列表指令是在這個例子只是愚蠢的格式:
testApp.directive("newsList",
function() {
var directive = {
"restrict": "E",
"replace": false,
"templateUrl": "news-list.html",
"scope": {
"news": "=news",
"title": "=title"
}
};
return directive;
});
查看模板:
<div class="news-list">
<p>{{title}}</p>
<ul>
<li ng-repeat="story in news.stories | orderBy:'date':true">{{story.date | date:'short'}}: {{story.title}}</li>
</ul>
<form>
<input type="text" id="newTitle" ng-model="newTitle" />
<button ng-click="news.addStory(newTitle)">Add</button>
</form>
</div>
非常感謝您花時間添加所有這些!我有一個非常類似的設置,雖然我使用的是服務而不是工廠,但不知道這是否有所作爲。當我這樣設置時,兩個未經控制的控制器,一切都完美無缺。我遇到的問題是,當我有一個只由圖像控制器控制的選項卡時,另一個則由圖像控制器控制,但嵌套在由幻燈片控制器控制的選項卡中。 可視化層次結構: 選項卡1:圖像控制器 選項卡2:幻燈片控制器>子選單 - >圖像控制器。 – Jacob 2015-03-02 19:42:48
你是否將相同的數據對象傳遞給兩個指令?如果控制器嵌套,它應該一樣容易。重要的是,這些指令使用相同的數據,而不是從兩個不同的控制器加載的分開但相同的數據。 – James 2015-03-02 19:48:47
我認爲可能就是這樣。我絕對試圖這樣做,但不知道我是否成功。幻燈片和圖像控制器採用圖像服務,並將$ scope.imageList設置爲服務中getImages函數的結果。我試過不從幻燈片控制器調用getImage函數,但它似乎沒有改變任何東西。他們最初加載相同的數據,但我認爲它是兩個獨立但平等的數據對象。在上面給出的例子中,同樣的想法會如何發揮作用?並且通過服務使用工廠會改變什麼? – Jacob 2015-03-02 19:59:30
- 1. 如何在AngularJS中的兩個指令之間共享範圍?
- 2. AngularJS:範圍不在嵌套的transcluded指令之間共享
- 3. 在AngularJS中控制器和指令之間的共享範圍
- 4. AngularJS:跨指令不共享的範圍
- 5. 模板類的實例之間是否共享一個範圍?
- 6. 不同範圍的多個AngularJS指令
- 7. 如何在指令和查看頁面之間共享一個範圍變量?
- 8. 多指令需要共享相同的專用範圍
- 9. 在不同的目錄之間共享一個流浪實例
- 10. 爲什麼我的AngularJS指令共享範圍?
- 11. 角度指令共享範圍問題
- 12. AngularJS指令共享範圍與ng重複 - 行爲不端
- 13. 共享範圍的不同模板中的角度多個指令
- 14. 在同一組件的實例之間共享可觀察性
- 15. 角多個實例,範圍不是孤立的,同一範圍
- 16. 在指定範圍之間共享方法
- 17. 如何在一個類的不同實例之間共享一個互斥量?
- 18. 在多個測試用例之間共享一個Selenium RemoteWebDriver實例
- 19. 從指令的多個實例共享數據
- 20. AngularJS - 範圍的指令
- 21. 相同DOM元素上的角度指令是否共享一個範圍?
- 22. 在Jetty實例之間共享Memcached
- 23. 在實例之間共享存儲
- 24. Python:在實例之間共享數據
- 25. 在實例之間共享緩存
- 26. 如何在多個NSPopUpButton實例之間最好地共享NSMenu
- 27. 在多個表單之間共享對象實例
- 28. 如何在多個Amazon EC2實例之間共享存儲?
- 29. 在C#中的多個對象之間共享一個實例化的類
- 30. 想要在C#中的多個實例之間共享一個字符串
你是如何表數據傳遞到指令? – James 2015-03-02 17:44:28
我有一個服務,使我的Django REST後端的AJAX調用。該應用程序是一個媒體管理應用程序,它具有圖像和視頻選項卡,以及幻燈片選項卡。由於用戶可以使用現有媒體創建幻燈片,因此「圖像」和「視頻」選項卡具有自己的表格,這些表格在「幻燈片」選項卡中被複制。我認爲問題是這些表的幻燈片實例嵌套在幻燈片控制器中。如果我製作一個使用指令的測試選項卡,它將與主圖像選項卡保持同步,但幻燈片實例不會。 – Jacob 2015-03-02 17:53:48