我的问题:
如题: angular中ng-init中定义值在控制器里面获取不到值
相关代码:
<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));
WHY?
여기에는 각 명령어의 컴파일 및 연결 프로세스가 포함됩니다. 동일한 노드에 ngController 명령어가 있는 경우 다른 명령어보다 먼저 컴파일 프로세스를 실행한다는 점에 유의해야 합니다(우선순위는 500이고 ngInit의 우선순위는 450입니다). 따라서 우리가 흔히 볼 수 있는 컨트롤러 기능인 ngController의 링크 기능을 실행할 때 ngInit이 컴파일 과정을 완료하지 않아 자연스럽게 데모의 가치를 얻을 수 없게 됩니다.
http://stackoverflow.com/ques...
콘솔이 아직 초기화되지 않았습니다. watch에서 콘솔을 사용해 보세요
위 위치에서 데모에 접속하고 싶다면. 나는 그것이 사용되어야한다고 생각합니다. $rootscope.demo 또는 $parentscope.demo
위 문제는 범위 문제여야 합니다.