我有一個關於從AngularJS的多個源解僱$http.get
的問題。下面的代碼很簡單: 我有$scope.test
函數,它是HTML中的一個按鈕的點擊處理程序。這$http.get
工作正常。 然後我有$http.get
它從服務器獲取一些數據並創建基本圖元。很簡單,這也適用。然後,我想在每個圖表節點上追加按鈕,並在按鈕處理程序上執行另一個$http.get
調用。但是這個不起作用!
這裏是代碼:
$scope.test = function() {
console.log('Klic na ID 1');
$scope.commonController.getData('orgunit/1?jsonDepth=3')
.success(function(workpositionData,status,headers,config) {
console.log('Klic na ID 1 OK');
$scope.workPositions = workpositionData.workPositions;
}).error(function(data,status,headers,config) {
commonController.error('Pri branju delovnih mest je prišlo do napake: '+data.description);
});
};
var options = new primitives.orgdiagram.Config();
var itemB, itemC, itemD, itemE;
var rootItem = new primitives.orgdiagram.ItemConfig();
options.rootItem = rootItem;
options.cursorItem = rootItem;
options.hasSelectorCheckbox = primitives.common.Enabled.True;
var buttons = [];
buttons.push(new primitives.orgdiagram.ButtonConfig("add", "ui-icon-folder-open", "Add0"));
options.buttons = buttons;
options.onButtonClick = function (e, data) {
console.log('Klic na ID '+data.context.id);
$http.get('proxy/api/orgunit/' + data.context.id + '?jsonDepth=3')
.success(function(workpositionData,status,headers,config) {
console.log('Klic na ID '+data.context.id + ' OK');
$scope.workPositions = workpositionData.workPositions;
}).error(function(data,status,headers,config) {
commonController.error('Pri branju delovnih mest je prišlo do napake: '+data.description);
});
};
$http.get('proxy/api/orgunit/tree?jsonDepth=2')
.success(function(orgUnitsData,status,headers,config) {
console.log('Reading orgunit tree ok');
rootItem.title = orgUnitsData.orgUnits[0].title;
rootItem.description = orgUnitsData.orgUnits[0].description;
rootItem.id = orgUnitsData.orgUnits[0].id;
rootItem.hasSelectorCheckbox = false;
rootItem.image = "http://www.basicprimitives.com/demo/images/photos/a.png";
$scope.addItems(rootItem, orgUnitsData.orgUnits[0].subordinates, 0);
jQuery(".basicdiagram").orgDiagram(options);
}).error(function(data,status,headers,config) {
console.log('Reading orgunit not ok');
});
我嘗試了很多製作這張圖(指令,單獨的模板和控制器,......),但沒有任何作品的組合。來自圖表註釋上的按鈕的$ http.get調用不會觸發(在Chome開發人員工具中的網絡中沒有任何內容)。
但這裏是interesing這樣的:如果我執行測試功能的其他時間(點擊HTML按鈕),我從測試功能和響應從$ http.get從圖表按鈕。它看起來像來自圖表按鈕的$ http.get調用正在等待一些東西,當這些東西出現時,它會觸發。
有沒有人有任何想法是什麼將解決這個問題?在控制檯輸出爲場景執行測試,執行圖表按鈕功能,執行測試是這樣的(粗體是從圖表按鈕功能控制檯條目,從測試功能nonbolded:
KLIC NA ID 1 KLIC NA ID 1行 KLIC吶ID 4 KLIC吶ID 1 KLIC吶ID 1 OK KLIC吶ID 4 OK
如果您對此有任何想法,請讓我知道,這件事情讓我發瘋了最後幾個小時。 UPDATE
我解決了它的解決方案,在這裏找到https://github.com/angular/angular.js/issues/2794#issuecomment-18807158,所以我用$ scope。$ apply包裝了我的調用函數。
$scope.$apply(function() {
console.log('Klic na ID ' + data.context.id);
$scope.commonController.getData('orgunit/' + data.context.id + '?jsonDepth=3')
.success(function(workpositionData,status,headers,config) {
console.log('Klic na ID ' + data.context.id + ' OK');
$scope.workPositions = workpositionData.workPositions;
}).error(function(data,status,headers,config) {
commonController.error('Pri branju delovnih mest je prišlo do napake: '+data.description);
});
});
問候
嘗試放置範圍。$ apply()在代碼中 –
究竟在哪裏?我認爲$ apply()不會解決問題,因爲問題在於$ http.get不會觸發,也不會導致UI在返回結果。 – Sobis
你的意思是像我更新問題wrope?如果是的話,你一直都是對的,我只是不知道你的意思。 – Sobis