angular.js - angular中ng-init中定义值在控制器里面获取不到值
为情所困
为情所困 2017-05-15 17:05:49
0
3
582
  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?

为情所困
为情所困

全員に返信(3)
世界只因有你

これには、各命令のコンパイルとリンクのプロセスが含まれます。同じノード上に ngController 命令がある場合、他の命令よりも前にコンパイル プロセスが実行されることに注意してください (その優先順位は 500 ですが、ngInit の優先順位は 450)。そのため、よく見かけるコントローラー関数であるngControllerのlink関数を実行すると、ngInitはコンパイル処理が完了していないため、当然demoの値を取得することができません。

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

いいねを押す +0
过去多啦不再A梦

コンソールはまだ初期化されていません。ウォッチでコンソールを試してください

いいねを押す +0
Ty80

上記の場所でデモにアクセスしたい場合。使うべきだと思います。 $rootscope.demo または $parentscope.demo

上記の問題はスコープの問題であるはずです。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート