2012-12-29 13 views
4

我想使用Anguilla爲GUI擴展獲取項目的WebDavURL屬性。在列表視圖中從Tridion Anguilla獲取WebDavURL

我有以下的代碼,但沒有返回WebDavURL:

selectedItem = selection.getItems()[0]; 
var item = $models.getItem(selectedItem); 
var webDavUrl = item.getInfo().webDavUrl(); 

回答

8

你必須實際加載webDavUrl ... item.loadWebDavUrl()。您必須設置事件處理程序,以便在WebDav URL作爲其異步方法加載後進行通知。以下是一個包​​含加載和設置事件處理程序的示例:

var item = $models.getItem(selectedItem), 
    webDavUrl = item.getWebDavUrl(); 

if (!webDavUrl) { 
    // WebDavUrl for cached item hasn't been loaded yet, so lets load it. 
    $evt.addEventHandler(item, "loadwebdavurl", function (event) { 
     webDavUrl = item.getWebDavUrl(); // also could do event.source.getWebDavUrl() 
    }); 
    item.loadWebDavUrl(); 
} 

希望能對您有所幫助!

+0

一旦webdavurl被加載,是否值得額外的努力去刪除事件處理程序?或者在這種情況下是否需要這樣做? –

+0

嗨,弗蘭克,我認爲這肯定值得付出,因爲該項目的事件處理程序也像其他屬性一樣被緩存。如果緩存範圍內的任何地方(我相信在同一窗口中運行的任何擴展?)項目打開,webdav url加載時未檢查它是否已被加載,那麼您的事件處理程序也將在那裏執行。 –