J'essaye de lancer ce code:
<!DOCTYPE html>
<html ng-app="myApp">
<head>
<title>Exemple 06</title>
</head>
<body>
<!-- Diretiva ng-repeat -->
<div ng-controller="MyController">
<a ng-href="#/">Page 1</a> | <a ng-href="#/p2">Page 2</a>
<div ng-view="#/p2"></div>
</div>
<script src="js/angular.js"></script>
<script src="js/angular-route.js"></script>
<script type="text/javascript">
var myApp = angular.module('myApp', ['ngRoute']);
myApp.config(function($routeProvider){
$routeProvider
.when('/' , {controller: 'MyController', templateUrl: 'p1.html'})
.when('/p2', {controller: 'MyController', templateUrl: 'p2.html'})
.otherwise({ redirectTo: '/'});
});
myApp.controller('MyController', function($scope){
$scope.nomes = [
{id: 1, nome: 'Arthur'},
{id: 2, nome: 'Portos'},
{id: 3, nome: 'Aramis'}
];
});
</script>
</body>
mais l'erreur ci-dessous se produit:
XMLHttpRequest ne peut pas charger le fichier: ///home/93579551515/Desktop/Angular/p1.html. Les demandes d'origine croisée ne sont prises en charge que pour HTTP.
Je ne veux pas l'exécuter sur un serveur web.
Vous pouvez ajouter des modèles tels que p1.html
et p2.html
dans votre index.html
en les plaçant dans des balises script
, comme indiqué par dans la documentation .
<script type="text/ng-template" id="p1.html">
This is the content of the template
</script>
Alors angular
n'aura plus besoin de faire AJAX demandes pour les récupérer.
Notez que ces éléments script
doivent apparaître after ng-app
.
J'ai le même problème dans Chrome. Si vous utilisez Chrome, vous pouvez désactiver la même stratégie d'origine dans Chrome. À partir de l'exécution de Chrome:
$ google-chrome --disable-web-security
Voici plus de détails .
Le fournisseur de route utilise le protocole http. Si vous exécutez ce code directement à partir d'un dossier, vous obtiendrez un problème d'origine croisée.
Conservez votre dossier sur un serveur tel que localhost/route et exécutez-le.
Fournissez un chemin de référence tel que templateUrl: '/p1.html'