0

私はそのような見解を持っています:

<div ng-controller= "test" ng-init = "doit()">
    <span>{{testval}}</span>
</div>

ビューのコントローラーは次のようになります。

function test($scope){
    var counter = 0;
    $scope.doit = function(){
       console.log('switched to view');
       $scope.testval = counter++; 
    };
};

'test'で制御されるビューに初めて切り替えると、'0'が表示されます。その後、何も表示されませんが、console.logは起動を続けます。ビューに切り替えて$scopeを変更することでビューを正常に更新するたびに、「doit」を実行するようにこれを設定するにはどうすればよいですか?

ありがとう

4

2 に答える 2

5

ng-init() を削除し、doit() の呼び出しをコントローラーに入れます。

function test($scope){
    var counter = 0;
    $scope.doit = function(){
       console.log('switched to view');
       $scope.testval = counter++; 
    };
    $scope.doit();
};

このビューに切り替えるたびに、コントローラー コードが実行されます。ビューの変更間でカウンターを保持したい場合は、カウンターをサービスまたは $rootScope に配置する必要があります (別のビューに移動すると、コントローラーとその $scope が破棄されるため)。

于 2013-01-22T17:21:53.033 に答える
0

$scope.digest()の末尾に追加する必要がありましたdoit。リストされている例は、私が遭遇したロジックをより小さなスケールで煮詰めた例です。実際にはgetPhysOrd、非同期のテンプレート化された Websocket ブリッジを実行してサーバーからデータをクエリするために呼び出された関数でした。これをオンザフライで実行できる必要がありました。ダイジェストを呼び出すと、ウォッチャーはモデルの変更に従ってビューを更新する必要がありました。ありがとう

于 2013-01-22T17:28:30.103 に答える