0

、それはこのコードでうまく働く: 単一分類フィールドのラベルを取得します。私はJavaScriptを使用して用語ストアから用語を取得しようとしていますどのように用語ストアのSharePointから複数値分類フィールドを取得するためにオンライン

var fieldValue = item.get_item("FieldName"); 
var fieldLabel = fieldValue.Label; 

複数値分類フィールドのラベルを取得する際に問題が1つありますか? 私はこの

var fieldValue = item.get_item("FieldName"); 
var taxEnumerator = fieldValue.getEnumerator(); 
while(taxEnumerator.moveNext()){ 
    var currentTerm = taxEnumerator.get_current(); 
    var label = currentTerm.Label; 
    // do something with the label here 
} 

試みた。しかし、それは動作しません

+0

@Thriggle:あなたは何か提案がありますか? – ysfibm

答えて

2

sp.taxonomy.jsライブラリがロードされていないと、その場合の分類フィールドの値に「軽量」として返されるので、あなたは、このエラーを取得しているほとんどの場合オブジェクト(ではなくSP.Taxonomy.TaxonomyFieldValueCollection objectタイプ)。

オプション1(推奨):SP.Taxonomy名前空間は分類フィールド値を扱うための標準的な方法ではないだけを提供しているのでsp.taxonomyライブラリで複数のタクソノミーのフィールド値を取得し得ることが

まず第一に、私はこの方法をお勧めしますが、 JSOMを介してManaged Metadata APIを操作する方法です。

例を表す複数分類フィールドの値を取得ロードされていることを確認:

次の例では、方法を示し

SP.SOD.registerSod('sp.taxonomy.js', SP.Utilities.Utility.getLayoutsPageUrl('sp.taxonomy.js')); 
SP.SOD.executeFunc('sp.taxonomy.js', 'SP.Taxonomy.TaxonomySession', function() { 

var ctx = SP.ClientContext.get_current(); 
var list = ctx.get_web().get_lists().getByTitle(listTitle); 
var item = list.getItemById(itemId); 
ctx.load(item); 

ctx.executeQueryAsync(
    function(){ 

     var fieldVal = item.get_item(fieldName); 

     for(var i = 0; i < fieldVal.get_count(); i++) { 
     var label = fieldVal.get_item(i).get_label(); 
     var guid = fieldVal.get_item(i).get_termGuid(); 
     //... 
     }  
    }, 
    function(sender,args){ 
     console.log(args.get_message()); 
    }); 


}); 

オプション2:複数のタクソノミーのフィールドを取得するには、以下に示すようsp.taxonomyライブラリはロードされ、分類フィールドの値がまだ_Child_Items_プロパティを介して取得することができない場合sp.taxonomy.jsライブラリは

をロードなし値:

var ctx = SP.ClientContext.get_current(); 
var list = ctx.get_web().get_lists().getByTitle(listTitle); 
var item = list.getItemById(itemId); 
ctx.load(item); 

ctx.executeQueryAsync(
    function(){ 

     var fieldVal = item.get_item(fieldName)._Child_Items_; 
     for(var i = 0; i < fieldVal.length; i++) { 
     var label = fieldVal[i].Label; 
     var guid = fieldVal[i].TermGuid; 
     //... 
     }  
    }, 
    function(sender,args){ 
     console.log(args.get_message()); 
    });