Domanda

Sono abbastanza nuovo per il modello di oggetto JavaScript (JSOM) e voglio fare una semplice chiamata per ottenere un valore di campo.Molto facile in c #, ma non riesco a ottenere un valore di campo anche se ho il 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;
}
.

Non voglio usare un'esecuzione ASYNC.Ho bisogno del valore da restituire immediatamente. Dal momento che ho il ListItem, perché non posso solo dire il ritorno ListItem ["Titolo"];??

È stato utile?

Soluzione

Nativamente CSOM consente solo chiamate asincroni. Se vuoi superare questo, puoi usare un quadro come http://spservices.codeplex.com/

Altri suggerimenti

Hai solo un riferimento all'elemento di elenco, ma l'elemento dell'elenco effettivo non è recuperato dal server finché non si esegue ExecuteQueryAsync.

Non fino a quando non hai informazioni effettive con cui lavorare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top