Я использую JHispter и я видел, что использует эти AngularJS правило: https://github.com/johnpapa/angular-styleguide/blob/master/a1/README.mdВводят завод в использовании контроллера строг и имени, МИЭФ функцию
Использование IIFE, Геттеры, Строгие, именованные функции, ControllerAs, и т.д. я хотел бы для создания простой страницы, которая анализирует JSON и показывает список фильмов (название, режиссер, продолжительность) и ту, которая длится намного дольше. Я искал и пробовал весь день, но ничего не работает. Завод не может использоваться в контроллере жестко, я ввожу его с помощью $ inject.
Это мой index.html
<html>
<head>
<title>Hello Angular</title>
<link href="stile.css" rel="stylesheet" type="text/css">
<link rel="shortcut icon" href="">
</head>
<body ng-app="myApp">
<h1>Hello Angular</h1>
<div ng-controller="myController as sc">
<h1>angular JSON test</h1>
<!-- <p>Print movie list</p>
<ul >
<li ng-repeat="film in sc.elencoFilm">
{{film.title}}, {{film.director}}, {{film.time}}
</li>
</ul>
<p >Trova il film più lungo: {{sc.maxTimeFilm().title}} </p> -->
</div>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>
<script src="JS/app.config.js"></script>
<script src="JS/app.state.js"></script>
<script src="JS/app.service.js"></script>
<script src="JS/app.controller.js"></script>
</body>
</html>
Моего app.config.js
(function() {
'use strict';
angular
.module("myApp", []) ;
})();
Моего app.state.js
(function() {
'use strict';
angular
.module('myApp')
.config(stateConfig);
stateConfig.$inject = ['$routeProvider'];
function stateConfig($routeProvider) {
$routeProvider.when('/', {
templateUrl:"index.html",
controller:"serverController"
});
}
})();
Моего app.controller.js
(function() {
'use strict';
angular
.module("myApp",[])
.controller("myController", myController);
//myController.$inject = ['$scope', '$http'];
myController.$inject = ['$scope', '$http','myFactory'];
function myController($scope, $http, myFactory) {
//function myController($scope, $http){//, myFactory) {
var vm = this;
var elencoFilm={};
myFactory.getMovies().then(function (response) {
vm.elencoFilm = response;
});
vm.maxTimeFilm = getMaxTimeFilm();
function getMaxTimeFilm() { //return the longest film
}
}
})();
Моего app.service.js
(function() {
'use strict';
angular.module('myApp',[])
.factory('myFactory', myFactory);
myFactory.$inject = ['$scope', '$http','myFactory'];
function myFactory($scope, $http) {
console.log("sono nella factory");
return {
getMovies: function ($http) {
return $http.get('https://api.myjson.com/bins/1bgtg3');
/* .then(function (response) {
return response.data.movies;
});*/
}
}
}
})();
он всегда возвращает эту ошибку: https://docs.angularjs.org/error/ $ инжекторов/unpr p0 = myFactoryProvider% 20% 3C-% 20myFactory% 20% 3C-% 20myController
его не может распознать myFactory в функции myController!
в app.controller.js эта линия
функция myController ($ сфера, $ HTTP, myFactory) { это вспыхивают ошибку!
Благодарим вас за помощь! :)
Похоже, что у вас есть myFactory в качестве зависимости для myFactory –
Попробуйте удалить '' myFactory'' из '$ inject' для функции' myFactory() ' –
Удалить $ scope с фабрики. – dfsq