我尝试将"ng-click"从角度使用到html页面中,我做到了。但是,如果我尝试在引导模式代码中对同一函数使用相同的"ng-click",则不再起作用。为什么。在第二种情况下如何称呼mehod?
这是我的网页
<!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");
}
})
原因是当模态出现时,所有角度指令的处理已经结束。因此,稍后将附加到 DOM 的模态模板上的 ng-click 属性没有区别。
通常,您希望使用正确的范围编译 HTML。
如果您不想深入了解此内容,请使用 Angular UI for Bootstrap这将为您提供引导小部件的良好指令和服务。
有一个$modal服务可以像返回承诺的$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());
});
};