SharePoint - Comment obtenir la valeur de champ avec JSOM + JSLINK sans appel ASYNC
-
10-12-2019 - |
Question
Je suis assez nouveau dans le modèle d'objet JavaScript (JSOM) et je veux faire un appel simple pour obtenir une valeur de champ.Très facile dans C #, mais je ne peux pas sembler avoir une valeur de champ, même si j'ai le listitem:
overrideContext.Templates.Item = customItem;
function customItem(context) {
var title = context.CurrentItem["Title"];
var img = "<img src='" + getImageUrl(1) + "' />";
return title + img;
function getImgUrl(classID) {
var clientContext = new SP.ClientContext();
var web = clientContext.get_web();
var sourceList = web.get_lists().getByTitle('ClassifiedImages');
var listItem = sourceList.getItemById(classID);
clientContext.load(listItem);
clientContext.executeQueryAsync(Function.createDelegate(this, function () { _returnParam = onSuccess(); }), Function.createDelegate(this, function () { _returnParam = onFail(); }));
return _returnParam;
}
Je ne veux pas utiliser une exécution ASYNC.J'ai besoin que la valeur soit retournée immédiatement. Depuis que j'ai le listitem, pourquoi ne puis-je pas dire que le retour Listitem ["titre"];??
La solution
Nativement CSOM permet uniquement aux appels asynchrones. Si vous souhaitez surmonter cela, vous pouvez utiliser un cadre tel que http://spservices.codeplex.com/
Autres conseils
Vous avez seulement une référence à l'élément de la liste, mais l'élément de liste réelle ne vous est pas extrait du serveur jusqu'à ce que vous fassiez l'exécuteurQuéryAsync.
Pas avant alors avez-vous des informations réelles pour travailler avec.