点击不会执行
Ng-click won't execute
我想让我的 div 标签可点击,但我无法让它工作。
我正在使用 Angular 1.5 和 Ionic V1。
当用户登录时,我希望 he/she 显示以下视图:
<ion-modal-view>
<ion-header-bar>
<div class="buttons">
<button class="button" ng-click="closeModal()"><i class="ion-chevron-left big-icon"></i></button>
</div>
</ion-header-bar>
<ion-content>
<div class="modal" style="background-color: #EDEEF1;" ng-controller="LoginCtrl">
<div class="row row-white">
<div class="col col-grey">
<div class="divider20"></div>
<h4 style="margin-top:30px;">Martin Nordström</h4>
</div>
</div>
<div class="row row-white">
<div class="col col-grey">
<p style="color: #006E78; margin-bottom:40px;">990624****</p>
</div>
</div>
<div class="divider20"></div>
<div class="row row-white main-container">
<div class="col col-grey">
<p style="color:#006E78;">Vart vill du ta emot dina leveranser?</p>
</div>
</div>
<div class="info-box" ng-class="{'info-box-active':isActive}" ng-click="activeBtn()" ng-controller="LoginCtrl">
<div class="box-row">
<div class="header">
<p class="leftText">IKANO Bostad</p>
<p class="rightText">Leveransrum</p>
</div>
</div>
<div class="box-row">
<div class="fields">
<p class="leftText">Folkungagatan 100</p>
<p class="rightText">10 kr/månad</p>
</div>
</div>
</div>
<div class="info-box">
<div class="box-row">
<div class="fields mixed">
<p class="leftText">Lägg till en ny leveransbox</p>
<p class="rightText">0 kr/månad</p>
</div>
</div>
</div>
<div class="row row-white">
<div class="col col-grey">
<button style="border-radius:50px; width:200px; height:45px;" class="button" ng-click="closeModal()">Klar</button>
</div>
</div>
<div class="divider20"></div>
</div>
</ion-content>
该视图在用户登录后显示,但所有 ng-click
都不起作用。这是控制器:
.controller('LoginCtrl', function ($scope, alerter, $localStorage, WizardHandler, datamapper, data, api, $state, authToken, $ionicModal, storage, endpointHandler, loadingHandler, $ionicPopup, $timeout) {
在控制器内部我有这个功能:
$timeout(function () {
$ionicModal.fromTemplateUrl('templates/deliveryDestination.modal.html', {
scope: $scope.$scope,
animation: 'slide-in-up'
}).then(function (modal) {
$scope.modal = modal
modal.show()
})
}, 1000)
编辑:这是 activeBtn()
的实现
$scope.isActive = false
$scope.activeBtn = function () {
console.log("clicked!");
$scope.isActive = !$scope.isActive
}
我是Angular的新手,但根据我的(小)经验,我认为问题与未正确连接的控制器有关。但我可能是错的!希望我们能一起解决这个问题,感谢大家的支持。
谢谢
您需要将 ng-controller="LoginCtrl"
放在所有 div 之外,否则 $scope 将无法获取上下文。
<ion-modal-view ng-controller="LoginCtrl">
var app = angular.module('app', []);
app.controller('LoginCtrl', function($scope) {
$scope.isActive = false
$scope.activeBtn = function () {
alert("clicked!");
$scope.isActive = !$scope.isActive
}
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<ion-header-bar>
<div class="buttons">
<button class="button" ng-click="closeModal()"><i class="ion-chevron-left big-icon"></i></button>
</div>
</ion-header-bar>
<ion-content ng-app="app" ng-controller="LoginCtrl">
<div class="modal" style="background-color: #EDEEF1;" >
<div class="row row-white">
<div class="col col-grey">
<div class="divider20"></div>
<h4 style="margin-top:30px;">Martin Nordström</h4>
</div>
</div>
<div class="row row-white">
<div class="col col-grey">
<p style="color: #006E78; margin-bottom:40px;">990624****</p>
</div>
</div>
<div class="divider20"></div>
<div class="row row-white main-container">
<div class="col col-grey">
<p style="color:#006E78;">Vart vill du ta emot dina leveranser?</p>
</div>
</div>
<div class="info-box" ng-class="{'info-box-active':isActive}" ng-click="activeBtn()">
<div class="box-row">
<div class="header">
<p class="leftText">IKANO Bostad</p>
<p class="rightText">Leveransrum</p>
</div>
</div>
<div class="box-row">
<div class="fields">
<p class="leftText">Folkungagatan 100</p>
<p class="rightText">10 kr/månad</p>
</div>
</div>
</div>
<div class="info-box">
<div class="box-row">
<div class="fields mixed">
<p class="leftText">Lägg till en ny leveransbox</p>
<p class="rightText">0 kr/månad</p>
</div>
</div>
</div>
<div class="row row-white">
<div class="col col-grey">
<button style="border-radius:50px; width:200px; height:45px;" class="button" ng-click="closeModal()">Klar</button>
</div>
</div>
<div class="divider20"></div>
</div>
</ion-content>
我看不出有什么问题,你能检查一下并与你的比较吗
angular.module('myApp', [])
.controller('LoginCtrl', function($scope) {
$scope.activeBtn = function(){
alert("asdasd")
}
});
<html ng-app="myApp">
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.18/angular.js"></script>
<script type="text/javascript" src="app.js"></script>
<title>Angular-Google-Charts Example</title>
</head>
<body>
<div class="modal" style="background-color: #EDEEF1;" ng-controller="LoginCtrl">
<div class="row row-white">
<div class="col col-grey">
<div class="divider20"></div>
<h4 style="margin-top:30px;">Martin Nordström</h4>
</div>
</div>
<div class="row row-white">
<div class="col col-grey">
<p style="color: #006E78; margin-bottom:40px;">990624****</p>
</div>
</div>
<div class="divider20"></div>
<div class="row row-white main-container">
<div class="col col-grey">
<p style="color:#006E78;">Vart vill du ta emot dina leveranser?</p>
</div>
</div>
<div class="info-box" style="background-color:red;" ng-click="activeBtn()">
<div class="box-row">
<div class="header">
<p class="leftText">IKANO Bostad</p>
<p class="rightText">Leveransrum</p>
</div>
</div>
<div class="box-row">
<div class="fields">
<p class="leftText">Folkungagatan 100</p>
<p class="rightText">10 kr/månad</p>
</div>
</div>
</div>
<div class="info-box">
<div class="box-row">
<div class="fields mixed">
<p class="leftText">Lägg till en ny leveransbox</p>
<p class="rightText">0 kr/månad</p>
</div>
</div>
</div>
<div class="row row-white">
<div class="col col-grey">
<button style="border-radius:50px; width:200px; height:45px;" class="button" ng-click="closeModal()">Klar</button>
</div>
</div>
<div class="divider20"></div>
</div>
</body>
</html>
完美运行fine.Just删除了ng-click="activeBtn"
旁边的ng-controller="LoginCtrl"
我想让我的 div 标签可点击,但我无法让它工作。 我正在使用 Angular 1.5 和 Ionic V1。
当用户登录时,我希望 he/she 显示以下视图:
<ion-modal-view>
<ion-header-bar>
<div class="buttons">
<button class="button" ng-click="closeModal()"><i class="ion-chevron-left big-icon"></i></button>
</div>
</ion-header-bar>
<ion-content>
<div class="modal" style="background-color: #EDEEF1;" ng-controller="LoginCtrl">
<div class="row row-white">
<div class="col col-grey">
<div class="divider20"></div>
<h4 style="margin-top:30px;">Martin Nordström</h4>
</div>
</div>
<div class="row row-white">
<div class="col col-grey">
<p style="color: #006E78; margin-bottom:40px;">990624****</p>
</div>
</div>
<div class="divider20"></div>
<div class="row row-white main-container">
<div class="col col-grey">
<p style="color:#006E78;">Vart vill du ta emot dina leveranser?</p>
</div>
</div>
<div class="info-box" ng-class="{'info-box-active':isActive}" ng-click="activeBtn()" ng-controller="LoginCtrl">
<div class="box-row">
<div class="header">
<p class="leftText">IKANO Bostad</p>
<p class="rightText">Leveransrum</p>
</div>
</div>
<div class="box-row">
<div class="fields">
<p class="leftText">Folkungagatan 100</p>
<p class="rightText">10 kr/månad</p>
</div>
</div>
</div>
<div class="info-box">
<div class="box-row">
<div class="fields mixed">
<p class="leftText">Lägg till en ny leveransbox</p>
<p class="rightText">0 kr/månad</p>
</div>
</div>
</div>
<div class="row row-white">
<div class="col col-grey">
<button style="border-radius:50px; width:200px; height:45px;" class="button" ng-click="closeModal()">Klar</button>
</div>
</div>
<div class="divider20"></div>
</div>
</ion-content>
该视图在用户登录后显示,但所有 ng-click
都不起作用。这是控制器:
.controller('LoginCtrl', function ($scope, alerter, $localStorage, WizardHandler, datamapper, data, api, $state, authToken, $ionicModal, storage, endpointHandler, loadingHandler, $ionicPopup, $timeout) {
在控制器内部我有这个功能:
$timeout(function () {
$ionicModal.fromTemplateUrl('templates/deliveryDestination.modal.html', {
scope: $scope.$scope,
animation: 'slide-in-up'
}).then(function (modal) {
$scope.modal = modal
modal.show()
})
}, 1000)
编辑:这是 activeBtn()
$scope.isActive = false
$scope.activeBtn = function () {
console.log("clicked!");
$scope.isActive = !$scope.isActive
}
我是Angular的新手,但根据我的(小)经验,我认为问题与未正确连接的控制器有关。但我可能是错的!希望我们能一起解决这个问题,感谢大家的支持。
谢谢
您需要将 ng-controller="LoginCtrl"
放在所有 div 之外,否则 $scope 将无法获取上下文。
<ion-modal-view ng-controller="LoginCtrl">
var app = angular.module('app', []);
app.controller('LoginCtrl', function($scope) {
$scope.isActive = false
$scope.activeBtn = function () {
alert("clicked!");
$scope.isActive = !$scope.isActive
}
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<ion-header-bar>
<div class="buttons">
<button class="button" ng-click="closeModal()"><i class="ion-chevron-left big-icon"></i></button>
</div>
</ion-header-bar>
<ion-content ng-app="app" ng-controller="LoginCtrl">
<div class="modal" style="background-color: #EDEEF1;" >
<div class="row row-white">
<div class="col col-grey">
<div class="divider20"></div>
<h4 style="margin-top:30px;">Martin Nordström</h4>
</div>
</div>
<div class="row row-white">
<div class="col col-grey">
<p style="color: #006E78; margin-bottom:40px;">990624****</p>
</div>
</div>
<div class="divider20"></div>
<div class="row row-white main-container">
<div class="col col-grey">
<p style="color:#006E78;">Vart vill du ta emot dina leveranser?</p>
</div>
</div>
<div class="info-box" ng-class="{'info-box-active':isActive}" ng-click="activeBtn()">
<div class="box-row">
<div class="header">
<p class="leftText">IKANO Bostad</p>
<p class="rightText">Leveransrum</p>
</div>
</div>
<div class="box-row">
<div class="fields">
<p class="leftText">Folkungagatan 100</p>
<p class="rightText">10 kr/månad</p>
</div>
</div>
</div>
<div class="info-box">
<div class="box-row">
<div class="fields mixed">
<p class="leftText">Lägg till en ny leveransbox</p>
<p class="rightText">0 kr/månad</p>
</div>
</div>
</div>
<div class="row row-white">
<div class="col col-grey">
<button style="border-radius:50px; width:200px; height:45px;" class="button" ng-click="closeModal()">Klar</button>
</div>
</div>
<div class="divider20"></div>
</div>
</ion-content>
我看不出有什么问题,你能检查一下并与你的比较吗
angular.module('myApp', [])
.controller('LoginCtrl', function($scope) {
$scope.activeBtn = function(){
alert("asdasd")
}
});
<html ng-app="myApp">
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.18/angular.js"></script>
<script type="text/javascript" src="app.js"></script>
<title>Angular-Google-Charts Example</title>
</head>
<body>
<div class="modal" style="background-color: #EDEEF1;" ng-controller="LoginCtrl">
<div class="row row-white">
<div class="col col-grey">
<div class="divider20"></div>
<h4 style="margin-top:30px;">Martin Nordström</h4>
</div>
</div>
<div class="row row-white">
<div class="col col-grey">
<p style="color: #006E78; margin-bottom:40px;">990624****</p>
</div>
</div>
<div class="divider20"></div>
<div class="row row-white main-container">
<div class="col col-grey">
<p style="color:#006E78;">Vart vill du ta emot dina leveranser?</p>
</div>
</div>
<div class="info-box" style="background-color:red;" ng-click="activeBtn()">
<div class="box-row">
<div class="header">
<p class="leftText">IKANO Bostad</p>
<p class="rightText">Leveransrum</p>
</div>
</div>
<div class="box-row">
<div class="fields">
<p class="leftText">Folkungagatan 100</p>
<p class="rightText">10 kr/månad</p>
</div>
</div>
</div>
<div class="info-box">
<div class="box-row">
<div class="fields mixed">
<p class="leftText">Lägg till en ny leveransbox</p>
<p class="rightText">0 kr/månad</p>
</div>
</div>
</div>
<div class="row row-white">
<div class="col col-grey">
<button style="border-radius:50px; width:200px; height:45px;" class="button" ng-click="closeModal()">Klar</button>
</div>
</div>
<div class="divider20"></div>
</div>
</body>
</html>
完美运行fine.Just删除了ng-click="activeBtn"
ng-controller="LoginCtrl"