搜尋

首頁  >  問答  >  主體

angular.js - angular中ng-init中定義值在控制器裡面取得不到值

  1. 我的問題:
    如題: angular中ng-init中定義值在控制器裡面取得不到值

  2. 相關代碼:

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

为情所困为情所困2783 天前615

全部回覆(3)我來回復

  • 世界只因有你

    世界只因有你2017-05-15 17:07:49

    這個涉及到每個指令的編譯連結過程。需要說明的是,在同一個節點上,如果有ngController指令,它比任何其他指令都要先執行編譯過程(它的 priority為500,而ngInit的 priority為450)。因而,在執行ngController的連結函數時,也就是我們常看到的controller函數,ngInit還未完成編譯過程,也就自然取不到demo的值。

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

    回覆
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-15 17:07:49

    console的時候還沒init,你試試watch裡console

    回覆
    0
  • PHP中文网

    PHP中文网2017-05-15 17:07:49

    如果想要在你上邊的位置訪問到demo。我覺得應該用。 $rootscope.demo或$parentscope.demo

    出現上面的問題應該是scope的作用域的問題。

    回覆
    0
  • 取消回覆