Как указал Кристофер, принятый ответ больше не является правильным. Потому что пустой массив все еще оценивается как истинный.
obj.children = []
<div ng-show='obj.children'>
As of Angular 1.3 this always shows if children exists as part of obj.
</div>
В этом случае массив существует. Но если вы дадите angular нулевой элемент массива массива для оценки, и такого элемента нет, он будет оценен как ложный.
<div ng-show='obj.children[0]'>
This will not show because there is no element in the array at 0
</div>
Вы также можете использовать это с [n] в качестве любого нумерованного элемента в массиве, чтобы показывать только тогда, когда число больше, чем n. Если вы используете obj.children [2], он будет отображаться, только если у вас есть 3 или более элементов в массиве.
Помните, что есть ошибки, которые TRY-CATCH не будет фиксировать с или без XACT_ABORT
.
Однако SET XACT_ABORT ON
не влияет улавливание ошибок. Это действительно гарантирует, что любая транзакция будет отменена / обречена. Когда "OFF", у вас все еще есть выбор: фиксация или откат (в зависимости от xact_state). Это основное изменение поведения SQL 2005 для XACT_ABORT
. Он также снимает блокировки и т. Д., Если срабатывает тайм-аут команды клиента и клиент отправляет директиву «abort». Без SET XACT_ABORT
блокировки могут оставаться, если соединение остается открытым. Мы с моим коллегой (MVP) тщательно протестировали это в начале года.
Я считаю, что SET XACT_ABORT ON был требованием при выполнении распределенных транзакций.
Из книг в сети: XACT_ABORT должен быть установлен в ON для операторов изменения данных в неявной или явной транзакции с большинством поставщиков OLE DB, включая SQL Server. Единственный случай, когда эта опция не требуется, - это если провайдер поддерживает вложенные транзакции. Для получения дополнительной информации см. Распределенные запросы и распределенные транзакции.
XACT_ABORT действительно влияет на обработку ошибок: он прервет все batch при обнаружении ошибки, и любой код, следующий за строкой, вызвавшей ошибку (включая проверку ошибок!), НИКОГДА не будет выполняться. Есть два исключения из этого поведения: XACT_ABORT заменяется TRY ... CATCH (блок CATCH всегда будет выполняться, и транзакции НЕ будут автоматически откатываться, а только визуализируются как нефиксируемые), и XACT_ABORT игнорирует RAISERROR.