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

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

  2. 相关代码:

<div 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>
</div>
(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?

阅读 7.9k
3 个回答

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

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

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

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进