Посмотрите на этот пример:
var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope,$http) {
var getJoke = function(){
return $http.get('http://api.icndb.com/jokes/random').then(function(res){
return res.data.value;
});
}
getJoke().then(function(res) {
console.log(res.joke);
});
});
Как вы можете видеть, getJoke
возвращает разрешенное обещание (оно разрешено при возврате res.data.value
). Таким образом, вы ждете, пока запрос $ http.get не будет завершен, а затем выполнится console.log (res.joke) (как обычный асинхронный поток).
Это plnkr:
blockquote>
<c:forEach>
должен работать сvalue="#{item.gamesEntered}"
, а не с полной строкой, но это не так.Теги JSTL запускаются во время сборки сборки время, построение дерева компонентов JSF. Компоненты JSF выполняются во время просмотра рендеринга, вызывая вывод HTML. Итак, в настоящий момент
<c:forEach>
работает,<p:dataTable>
не запускается, а егоvar
нигде не доступен и будет оцениваться какnull
. Обратите внимание, что это также относится кrowIndexVar
, который будет оцениваться как0
(значение по умолчанию дляint
).См. Также
Я пробовал
blockquote><ui:repeat>
, но в любом случае страница становится пустой, если эта данные должны были появиться.
UIData
компоненты могут принимать только детиUIColumn
.<ui:repeat>
не является таким.<c:forEach>
работает, потому что он в основном создает кучу физических компонентов<p:column>
для данных. Вам повезло, что каждый элемент имеет, по-видимому, такое же количествоgamesEntered
, что и первый элемент, это в противном случае также сильно потерпело бы неудачу.См. Также:
Кстати, вам нужно
<p:columns>
, которое в основном является<ui:repeat>
, которое простирается от классаUIColumn
. Но и здесь егоvalue
нельзя установить для каждой строки, только для каждой таблицы.rowIndexVar
недоступен в<p:columns value>
и в любом случае будет оцениваться как0
.<p:dataTable value="#{events.gameRecordList}" var="item" rowIndexVar="rowIndex"> <p:column>#{item.field1}</p:column> <p:column>#{item.field2}</p:column> <p:columns value="#{events.gameRecordList[0].gamesEntered}" columnIndexVar="columnIndex"> <p:selectBooleanCheckbox value="#{events.gameRecordList[rowIndex].gamesEntered[columnIndex]}"/> </p:columns> </p:dataTable>
См. Также: