angular.js - angular中ng-init中定义值在控制器里面获取不到值

浏览:30日期:2023-01-04

问题描述

我的问题:如题: angular中ng-init中定义值在控制器里面获取不到值

相关代码:

<p 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?

问题解答

回答1:

这个涉及到每个指令的编译链接过程。需要说明的是,在同一个节点上,如果有ngController指令,它比任何其他指令都要先执行编译过程(它的 priority为500,而ngInit的 priority为450)。因而,在执行ngController的链接函数时,也就是我们常常看到的controller函数,ngInit还未完成编译过程,也就自然取不到demo的值。

http://stackoverflow.com/ques...

回答2:

console的时候还没init,你试试watch里console

回答3:

如果想要在你上边的位置访问到demo。我觉得应该用。$rootscope.demo或$parentscope.demo

出现上面的问题应该是scope的作用域的问题。

相关文章: