4

model.data以下が含まれます。

{
    "name": "Jamie",
    "age": 25
}  

次のようなディレクティブがあります。

<my-directive data="model.data"></my-directive>  

ディレクティブを次のように定義しました。

app.directive('myDirective', function(){  
    return {
        restrict: 'E',
        scope: {
            data: '='
        },
        templateUrl: 'grid.html',
        controller: function($scope) {
            console.log($scope);
            console.log($scope.data);
        }
    }
}

問題はconsole.log($scope)、$scope で値を返すことです。データが含まれていることがわかります:

{
    $$asyncQueue: Array[0],
    $$childHead: null,
    ...
    ...
    data: Array[1]
}

ただし、console.log($scope.data)返品しますundefined。理由はありますか?

4

1 に答える 1

9

のようなものがconsole.log($scope);機能するがconsole.log($scope.someProperty);機能しない場合はsomeProperty常に、promise($http呼び出しや$qで作成されたpromiseなど)を解決した結果として設定されているためです。

最初のログは機能しているように見えますが、実際に起こっているのは、ログエントリを手動で確認するまでに(つまり、クリックして内容を展開するまでに)、値が入力/解決されていることです。

コントローラでは、プロパティを$ watchし、データが到着/解決されたら、データに対して実行したいことをすべて実行するように監視コールバック関数を設定する必要があります。

于 2013-03-09T15:31:12.753 に答える