Отображение div в angularjs не работает
Я хочу показать div
только когда функция происходит.
Вот HTML, но он всегда показывает, я хочу, чтобы он показывался только когда функция истинна
<div ng-controller="controller">
<div ng-show="data.show"> Successfully triggered </div>
<div ng-hide="!(data.hide)"> Error in triggering</div>
</div>
В контроллере у меня есть:
if(results.data=='success') {
$scope.data = {
show: false,
hide: true
};
//Here I should display the success message
} else {
//Here I should display the error message
}
Итак, как я могу показать успех div
если условие и ошибка div
в другом состоянии.
Примечание: если возможно, если div
показывается в замедленном режиме, это будет очень полезно для меня. Как время затухания в JQuery.
4 ответа
Вы должны поддерживать только один флаг data.show
этого более чем достаточно, чтобы показать скрыть div.
<div ng-controller="controller">
<div ng-show="data.show"> Successfully triggered </div>
<div ng-hide="data.show"> Error in triggering</div>
</div>
контроллер
app.controller('myCtrl', function(){
///other stuff here ..
$scope.myFunction = function(){
if(results.data=='success') {
$scope.data.show = true; //success
} else {
$scope.data.show = false; //error
}
}
//init code here
$scope.data = { show: false }; //this should be outside your show/hide function
})
Вот мой пример: Пример для show div на jsfiddle
<div ng-app>
<div ng-controller="showCtrl">
<div>Show Div:
<button ng-click="set()"></button>
<div ng-show="showDiv"> Successfully triggered </div>
<div ng-hide="showDiv"> Error in triggering</div>
</div>
</div>
</div>
Если вы хотите добавить время нарастания и затухания, я предлагаю вам взглянуть на угловую анимацию. Документация и пример для угловой анимации.
Я бы использовал один div что-то вроде следующего
<div ng-controller="controller">
<div ng-show="data.show">{{data.message}}</div>
</div>
Избавьтесь от своего свойства hide для данных, которые ему не нужны, и установите текст в контроллере на другое свойство данных. Суть в том, что data.show должен быть "правдивым", чтобы div показывался. Честно говоря, если вы всегда собираетесь показывать div, я бы избавился от ng-show и просто динамически установил содержимое div в контроллере.
Вау, ответов уже так много, и все они правильные. Все также справедливо отметили, что для небольшой анимации вы можете использовать ngAnimate.
Мой маленький jsFiddle здесь, как забавное маленькое упражнение.
var app = angular.module('app', ['ngAnimate']);
app.controller('testCtrl', function ($scope) {
$scope.data = {
show:true,
hide: false
};
$scope.go = function(checked) {
$scope.data = {
show:!checked,
hide: checked
};
}
});