Я хочу показать лайтбокс с содержимым, открытым ng-show, но я не знаю, как запускать лайтбокс JS. Я ищу что-то вроде
ng-on-show="showLightbox()"
Я хочу показать лайтбокс с содержимым, открытым ng-show, но я не знаю, как запускать лайтбокс JS. Я ищу что-то вроде
ng-on-show="showLightbox()"
Я думаю, было бы лучше $смотреть вашу модель, на которой привязано ng-show.
Вот пример:
<div ng-app="myApp" ng-controller="myCtrl" ng-init="isDisplayed = true">
<div ng-show="isDisplayed">something</div>
<button ng-click="isDisplayed = !isDisplayed">Toggle</button>
</div>
var myApp = angular.module('myApp', [])
.controller('myCtrl', function($scope, $log) {
$scope.$watch('isDisplayed', function(newValue, oldValue) {
if (newValue !== oldValue) {
$log.log('Changed!');
}
});
});
и fiddle
Ну, ng-show берет логическое значение, поэтому ваш лучший вариант для его использования - вызывать функцию showLightbox где-то в логике, которая устанавливает ng-show.
$scope.reasonToShow = false;
$scope.showSomething = function(myCondition){
if(myCondition){
showLightbox();
$scope.reasonToShow = true;
}
};
<div ng-show='reasonToShow'></div>
Вы можете сделать что-то подобное с часами $, если вам нужно.
как насчет более простого подхода?
скажем, у вас есть такой элемент:
<div ng-show="someBooleanValue"></div>
Если вы используете оператор AND после displayMyDiv и помещаете туда обратный вызов, обратный вызов будет выполняться только в том случае, если первое значение TRUE (что работает логический оператор И). Так вот что я пробовал с помощью angular 1.15.10, и он работает:
$scope.showLightbox = function() {
// your logic goes here
return true;
}
<div ng-show="someBooleanValue && showLightbox()"></div>
Если и только если someBooleanValue истинно, тогда будет также оцениваться $scope.showLightbox(). Поэтому вам нужно будет сделать $scope.showLightbox(), чтобы вернуть TRUE, иначе ваш div не будет виден.
Этот способ не только упрощен, но и обрабатывает реализацию наблюдателя до angular (меньше кода для поддержки), а возврат обратного вызова будет оцениваться только в том случае, если someBooleanValue изменяется на TRUE.