Ma question :
Comme dans le titre : La valeur définie dans ng-init en angulaire ne peut pas être obtenue dans le contrôleur
Codes associés :
<p class="container" ng-app="app" ng-controller="ctrl" ng-init="demo='风一样的男子'">
<h1>ng-init</h1>
<input ng-model="demo" type="text">
demo = {{demo}}
<button type="button" ng-click="demoClick()">button</button>
</p>
(function(angular) {
'use strict';
var app = angular.module('app', []).controller('ctrl', ctrl);
function ctrl ($scope, $http) {
console.log('直接获取: ' + $scope.demo); // undefined
$http.post('/demo', {
direction: $scope.demo // undefined
});
$scope.demoClick = function () {
console.log('click: ' + $scope.demo); // 风一样的男子
$http.post('/demo', {
direction: $scope.demo // 风一样的男子
});
};
}
}(angular));
POURQUOI ?
Cela implique le processus de compilation et de liaison de chaque instruction. A noter que sur un même nœud, s'il existe une instruction ngController, il exécutera le processus de compilation avant toute autre instruction (sa priorité est de 500, alors que celle de ngInit est de 450). Par conséquent, lors de l'exécution de la fonction de liaison de ngController, qui est la fonction de contrôleur que nous voyons souvent, ngInit n'a pas terminé le processus de compilation, il ne peut donc naturellement pas obtenir la valeur de démo.
http://stackoverflow.com/ques...
La console n'a pas encore été initialisée, essayez la console en montre
Si vous souhaitez accéder à la démo à l'emplacement ci-dessus. Je pense qu'il faudrait l'utiliser. $rootscope.demo ou $parentscope.demo
Le problème ci-dessus devrait être un problème de portée.