Я использую AngularJS v.1.4.8.
Я делаю angularJS учебник, и я борюсь с ng-include на div. Код внутри частица, который я пытаюсь включить, прекрасно работает, когда внутри файла index.html, но по какой-то причине, когда я пытаюсь включить его, программа прерывается - давая мне сообщение об Error: Access Denied
в Error: Access Denied
в консоли.
Программа использует API GitHub для извлечения пользователей и отображения их репозиториев в браузере. Нет проблем с подключением API, и я не достиг предела скорости.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>AngularJS Tutorial</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<script src="app.js"></script>
<script src="main.ctrl.js"></script>
</head>
<body ng-app="app">
<div ng-controller="MainController">
<h1>{{message}}</h1>
<h4>{{error}}</h4>
<form name="searchUser" ng-submit="search()">
<input type="search" placeholder="username to find" ng-model="username" />
<input type="submit" value="Search" />
</form>
<div ng-include="'userdetails.html'"></div>
</div>
</body>
</html>
<div>
<div>Name: {{user.name}}</div>
<div>Location: {{user.location}}</div>
<img ng-src="http://www.gravatar.com/avatar/{{user.gravatar_id}}" title="{{user.name}}" />
Order:
<select ng-model="repoSortOrder">
<option value="+name">Name</option>
<option value="-stargazers_count">Stars</option>
<option value="+language">Language</option>
</select>
</div>
<table>
<thead>
<tr>
<th>Name</th>
<th>Stars</th>
<th>Language</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="repo in repos | orderBy:repoSortOrder">
<td>{{repo.name}}</td>
<td>{{repo.stargazers_count | number}}</td>
<td>{{repo.language}}</td>
</tr>
</tbody>
</table>
angular.module("app").controller("MainController", function($scope, $http){
$scope.message = "Github Viewer";
var onUserComplete = function(response){
$scope.user = response.data;
$http.get($scope.user.repos_url)
.then(onRepos, onError);
};
var onRepos = function(response){
$scope.repos = response.data;
};
var onError = function(error){
$scope.error = error.status + ": " + error.statusText + " - " + error.data.message;
};
$scope.username = "angular";
$scope.search = function(){
$http.get("https://api.github.com/users/"+$scope.username)
.then(onUserComplete, onError);
};
$scope.repoSortOrder = "-stargazers_count";
});
Я загрузил WampServer, и теперь он работает... Видимо, он не смог получить доступ к файлам локально, но по какой-то причине он работает через сервер.
ngInclude
использует ajax и поэтому требует, чтобы сервер проанализировал запрос.
Попробуйте использовать angular-sanitize.js
с атрибутом ng-bind-html
.
Включите angular-sanitize.js http://ajax.googleapis.com/ajax/libs/angularjs/XXX/angular-sanitize.js
Добавьте 'ngSanitize' к вам зависимости модуля var myApp = angular.module('myApp', ['ngSanitize']);
<div ng-bind-html="userdetails.html"></div>