/ / Dlaczego kontroler ng nie działa z funkcją w tym przykładzie? - angularjs

Dlaczego ng-kontroler nie działa z funkcją to ten przykład? - angularjs

Próbuję wykonać samouczek, ale ten kod nie działa dla mnie. Czy ktoś może wyjaśnić, dlaczego i jak go rozwiązać? Myślę, że ma to związek z kontrolerem ng, ale nie jestem pewien, dlaczego.

<!doctype html>

<html ng-app>
<head>
<title>AngularJS 2</title>
<script src="angular.min.js"></script>
</head>

<body ng-controller="MyController">
<h1>{{author.name}}</h1>
<p>{{ author.title + ", " + author.company }}</p>

<script>
function MyController($scope) {
$scope.author = {
"name" : "Ray Villa",
"title" : "Staff Author",
"company" : "boss`enter code here`.com"
}
}
</script>

</body>
</html>

Odpowiedzi:

2 dla odpowiedzi № 1

Twój kod nie działałby w wersji kątowej 1.3+, ponieważ definiujesz kontroler jako funkcję globalną.

Z dokumentacji AngularJS:

Migracja z 1,2 do 1,3

Kontrolery

Z powodu 3f2232b5 kontroler $ nie będzie już wyglądałdla kontrolerów w oknie. Stare zachowanie patrzenia w okno na kontrolery było pierwotnie przeznaczone do użycia w przykładach, pokazach i aplikacjach zabawkowych. Odkryliśmy, że zezwolenie na globalne funkcje kontrolera zachęca do złych praktyk, dlatego postanowiliśmy domyślnie wyłączyć to zachowanie.

Aby przeprowadzić migrację, zarejestruj kontrolery w modułach zamiast ujawniać je jako globalne Zamiast tego zdefiniuj kontroler w następujący sposób:

<html ng-app="myApp">
<head>
<title>AngularJS 2</title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>
</head>

<body ng-controller="MyController">
<h1>{{author.name}}</h1>
<p>{{ author.title + ", " + author.company }}</p>

<script>
angular.module("myApp", []);

angular.module("myApp").controller("MyController", function ($scope) {
$scope.author = {
"name": "Ray Villa",
"title": "Staff Author",
"company": "boss`enter code here`.com"
}
});
</script>

</body>

</html>


0 dla odpowiedzi nr 2

Brakuje nawiasu zamykającego w definicji funkcji.


0 dla odpowiedzi № 3

Brakuje Ci kontekstu kątowego.

Twoja aplikacja wymaga modułu, więc musisz pisać ng-app="myApp" i użyj tego modułu, aby zarejestrować funkcję kontrolera.

function MyController($scope) { /* ... */ }

angular.module("myApp, []).controller("MyController", MyController);

Dzięki temu Angular uruchomi aplikację (myApp) i zarejestruje określony kontroler.