我的應用程序讀取SharePoint Term Store並需要獲取與用戶語言相關聯的標籤。我得到了用戶的語言和LCID,然後我在使用此代碼的分類讀取某個節點下的所有條款:閱讀SharePoint分類術語存儲和getDefaultLabel(lcid)
... some code to get the Term Store, then Term Group, then Term Set, and finally startTerm
var tsTerms = startTerm.get_terms();
context.load(tsTerms);
context.executeQueryAsync(
function() {
var termsEnum = tsTerms.getEnumerator();
while (termsEnum.moveNext()) {
var currentTerm = termsEnum.get_current();
var termName = currentTerm.get_name();
var userLabel = currentTerm.getDefaultLabel(lcid);
var userLabelValue = userLabel.get_value();
console.log ("Label=", userLabel, userLabelValue)
... more code ...
在while循環,我可以得到術語,我需要的所有屬性,標籤除外。在我在網上找到的其他示例中,爲了獲取默認標籤,我的userLabel對象將被加載到上下文中,然後調用另一個context.executeQueryAsync。所有這一切都有道理,但這會導致對SharePoint服務器的大量調用。
但是,當我向控制檯寫入userLabel對象時,顯示爲SP.Result類型,當我打開它時,我在m_value下看到我想要的標籤。所以應該不需要再次去服務器。但是,userLabelValue返回爲0 - 顯然,get_value()不起作用。在MSDN文檔中,SP.Result對象類型僅供內部使用。有什麼方法可以提取它存儲的數據嗎?
我附上了擴展對象的控制檯圖片,我們清楚地看到m_value =「Contrat」,這是我需要的標籤。