В приведенном ниже #test
кнопка #test
работает, но #calendarButton
этого не делает. Должна быть какая-то причина, по которой мой header.html
не может получить доступ к моему Javascript.
index.php
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title> Lifting Analytics </title>
<link href="bootstrap/css/bootstrap.css" rel="stylesheet">
<link href="css/style.css" rel="stylesheet">
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.7/angular.min.js"></script>
<script type="text/javascript" src="js/angular-ui-router.min.js"></script>
<script type="text/javascript" src="bootstrap/js/bootstrap.js"></script>
<script type="text/javascript" src="js/app.js"></script>
<script type="text/javascript" src="js/script.js"></script>
</head>
<body>
<div class"container" ng-app="app">
<header ng-include="'templates/header.html'"></header>
<div ui-view></div>
</div>
<button id="test">test</button> // This button works
</body>
</html>
header.html (эта кнопка не работает)
...
<button id="calendarButton" class="btn btn-default">Calendar</button>
...
script.js
$(document).ready(function() {
$('#test').click(function(){
console.log("in");
alert("in");
});
$('#calendarButton').click(function(){
console.log("in");
alert("in");
});
});
app.js (не уверен, что это необходимо)
Также, как я могу ссылаться на этот файл? маршрутизатор? Извините, мой первый день с угловатым.
angular
.module('app', [
'ui.router'
])
.config(['$urlRouterProvider', '$stateProvider', function($urlRouterProvider, $stateProvider){
$urlRouterProvider.otherwise('/');
$stateProvider
.state('home', {
url: '/',
templateUrl: 'templates/home.html'
})
.state('record', {
url: '/record',
templateUrl: 'templates/record.html'
})
.state('calendar', {
url: '/calendar',
templateUrl: 'templates/calendar.html',
controller: function($scope){
$scope.array = ["item 1", "item 2", "item 3"]
}
})
.state('graph', {
url: '/graph',
templateUrl: 'templates/graph.html'
})
}])
Если вы выполняете маршрутизацию с использованием ng-include или ng-route, элементы в этих маршрутах не отображаются до тех пор, пока не будет задействован соответствующий маршрут. Вот почему событие нажатия кнопки календаря не фиксируется - оно не существует в момент привязки.
Чтобы заставить его работать, вы можете попробовать это.
$('body').on('click', '#calendarButton', function() {...}); //a delegate
Хотя, я бы не рекомендовал это делать, поскольку это не "угловой" способ. Что будет лучше, это примерно следующее.
В вашем взгляде..
<button id="calendarButton" ng-click="clickFn()"/>
В вашем контроллере...
$scope.clickFn = function() { ... }
document.ready
бесполезен в angular, используйте обработчики угловых событий