引导模式内的ng-click事件未触发

时间:2014-12-31 20:17:03

标签: html angularjs twitter-bootstrap angularjs-scope

我尝试使用" ng-click"从角度到html页面,我管理。但如果我尝试使用相同的" ng-click"在bootstrap模态代码中的相同功能不再工作。为什么。如何在第二种情况下给mehod打电话?

这是我的HTML

<!DOCTYPE html>
<html ng-app="myApp">
<head>
    <title>title</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css">
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min.js"></script>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js"></script>
    <script type="text/javascript" src="script.js"></script>
</head>
<body>
    <div ng-controller="MainController">
        <a href="" ng-click="first()">Call from file</a><br/>
        <a href="#about" data-toggle="modal">Call from a pop-up</a>
    </div>

    <div class="modal fade" id="about" role="dialog">
        <div class="modal-dialog" modal-sm>
            <div class="modal-content">
                <div class="modal-header">
                    <h4>Pop-up head.</h4>
                </div>
                <div class="modal-body">
                    <h4>Pop-up body.</h4>
                </div>
                <div class="modal-footer">
                    <button class="btn btn-primary" ng-click="first()">Send</button>
                </div>
            </div>
        </div>
    </div>

</body>
</html>

这是我的剧本

var myApp = angular.module('myApp', []);
myApp.controller("MainController", function($scope){
    $scope.val= 1
    $scope.even= false
    $scope.increment = function(){
        $scope.val +=1
        $scope.even = ($scope.val%2 == 0)?true:false;
        //$scope.even = $scope.val%2 == 0
    }
    $scope.first = function(){
        alert("work");
    }
})

1 个答案:

答案 0 :(得分:3)

原因是当模态显示时,所有角度指令的处理已经结束。因此,稍后将附加到DOM的模态模板上的ng-click属性没有任何区别。

通常,您希望使用正确的范围编译HTML。

如果您不想详细了解此信息,请使用Angular UI for Bootstrap 这将为bootstrap小部件提供很好的指令和服务。

有一个$ modal服务可以像返回promise的$ http服务一样使用。 在模态消失或关闭时,您还可以在事件中进行回调。

示例中有示例代码。以下是一个提出模态的函数如何:

$scope.open = function (size) {

    var modalInstance = $modal.open({
      templateUrl: 'myModalContent.html',
      controller: 'ModalInstanceCtrl',
      size: size,
      resolve: {
        items: function () {
          return $scope.items;
        }
      }
    });

    modalInstance.result.then(function (selectedItem) {
      $scope.selected = selectedItem;
    }, function () {
      $log.info('Modal dismissed at: ' + new Date());
    });
  };