【问题标题】:Ng-click won't executeNg-click 不会执行
【发布时间】:2017-11-21 12:57:49
【问题描述】:

我想让我的 div 标签可点击,但我无法让它工作。 我正在使用 Angular 1.5 和 Ionic V1。

当用户登录时,我希望他/她看到此视图:

<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-clicks 都不起作用。这是控制器:

.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 的新手,但根据我的(很少)经验,我认为问题与未正确连接的控制器有关。但我可能是错的!希望我们能一起解决这个问题,我很感谢我能得到的所有支持。

谢谢

【问题讨论】:

  • 控制台有错误吗?
  • @Abdoutelb 不幸的是没有错误。
  • 嗨@Martin,请您尝试使用 (click) 而不是 ng-click。我希望它会有所帮助。
  • 好的,你能分享一下activeBtn这个不起作用的点击的实现吗?
  • @AlexisToby 嗨,朋友!感谢您抽出宝贵时间回复,但这也没有奏效。 ://

标签: javascript angularjs ionic-framework angular-controller


【解决方案1】:

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>

我没有看到这个问题,你能检查一下并与你的比较

【讨论】:

  • 啊啊啊啊!我忘了把它放在全局范围内!傻我
  • @MartinNordström 不用担心:D
【解决方案2】:

你需要把 ng-controller="LoginCtrl" 放在所有 div 之外,否则 $scope 将无法获取上下文。

 <ion-modal-view ng-controller="LoginCtrl">

【讨论】:

  • 您好!我试过了,但没有用。感谢您抽出宝贵时间。
【解决方案3】:

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>

工作得很好。刚刚删除了ng-click="activeBtn"旁边的ng-controller="LoginCtrl"

【讨论】:

    猜你喜欢
    • 2013-09-03
    • 2013-06-20
    • 2016-02-25
    • 2017-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-06
    • 2014-01-19
    相关资源
    最近更新 更多