2

マイ アプリは SharePoint 用語ストアを読み取り、ユーザーの言語に関連付けられたラベルを取得する必要があります。ユーザーの言語と 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 ループでは、ラベルを除いて、必要な用語のすべての属性を取得できます。Web で見つけた他のサンプルでは、​​デフォルトのラベルを取得するために、userLabel オブジェクトがコンテキストに読み込まれ、別の context.executeQueryAsync が呼び出されます。これはすべて理にかなっていますが、これにより SharePoint サーバーへの呼び出しが大量に発生します。

しかし、userLabel オブジェクトをコンソールに書き込むと、タイプ SP.Result として表示され、それを開くと、m_value の下に必要なラベルが表示されます。したがって、サーバーに再度アクセスする必要はありません。ただし、userLabelValue は 0 として返されます。明らかに、get_value() は機能しません。MSDN ドキュメントでは、SP.Result オブジェクト タイプは内部使用専用です。保存されているデータを抽出する方法はありますか?

オブジェクトが展開されたコンソールの写真を添付し​​ました。そこには、取得する必要があるラベルである m_value = "Contrat" がはっきりと表示されています。

コンソールログ

4

2 に答える 2

0

私は同じ問題に直面していて、解決策を見つけました。getDefaultLabel(lcid) を使用する代わりに、これを使用します。

termSet.getTerm(Termid).getAllLabels(lcid).itemAt(0).get_value();

私の意見では、これは「getDefaultLabel」と同じですが、機能します。他の機能よりも少し負荷がかかるかもしれませんが、これは私にとってはうまくいきます

于 2015-01-23T14:06:03.377 に答える