0

我有這樣的代碼:解決uibmodal /路由

var b = 1 

var a = $uibModal.open({ 
    ariaLabelledBy: 'modal-title', 
    ariaDescribedBy: 'modal-body', 
    templateUrl: 'enteModal.html', 
    controller: 'enteCtrl', 
    resolve: { 
     obj: {"id" : id, "description" : "blabla"}, 
     id: eval(b), 
    } 
}); 

和它的作品,但我不知道爲什麼。 我讀過決心的doc,這應該是一個地圖關鍵字符串關鍵功能。據我所知,Resolve使用angular.injector()。invoke(),但是在對象或整數上返回錯誤

但是控制器正確解析objid。它爲什麼與對象或整數一起工作?該文件是錯誤的?或uibmodal解決不一樣的路線決心?

+1

你誤解了什麼文檔說。那裏一切正常。 {String}是一個關鍵類型。 – dfsq

回答

0

您的解決方案對象需要是string:function的映射,其中string是將被注入到模態控制器的依賴項的名稱,而function是一個工廠函數,將用於提供該依賴項控制器被實例化。

obj: {"id" : id, "description" : "blabla"}, 
id: eval(b), 

在你的情況鍵是 'OBJ' 和 'ID' 和它們的值分別爲{ 「ID」:ID, 「說明」: 「布拉布拉」}和eval(b)中RESP。

+0

eval(id)和{..}是一個對象和一個整數,而不是你說的工廠函數。它爲什麼有效?據我所知,Resolve使用angular.injector()。invoke(),但在對象或整數上返回錯誤 – holylaw

+0

resolve屬性是一個可選的映射對象/ [現有服務名稱數組]。地圖對象的所有鍵都可以作爲依賴注入控制器。密鑰將是一個簡單的字符串,其值可以是函數或字符串。如果提供了字符串,Angular將假定它是一個現有的服務並將該特定服務注入到控制器。如果該值是一個函數,它將作爲一個工廠函數,返回值將被注入到控制器中。 –

+0

在我的情況下,鍵的值是一個對象和整數,而不是一個字符串或函數,但它的工作,爲什麼? – holylaw