1

アプリで ng-init を使用して変数を初期化しています。問題は、アプリがロードされた後にこの変数を変更していて、関数の実行後に新しい値を格納するために最初に初期化した変数が必要なことです。私は角度が初めてで、それを理解できませんでした...

これは私のng-initです:

<tr ng-repeat="(script_id, cron_format) in row" **ng-init**="oldCron = cron_format">
    <td>{{user_id}}</td>
    <td>{{script_id}}</td>
    <td>
       <input type="text" ng-model="cron_format" ng-blur="saveCron(user_id,script_id,cron_format,oldCron)"/>
    </td>
</tr>

saveCron()値を変更する必要がありますがoldCron、関数を呼び出すたびに、ng-init の値で oldCron を初期化します。これは、変更をコミットしようとする関数です:

$scope.saveCron = function(userId,scriptId,cronFormat,oldCron){
    if (oldCron != cronFormat) {
        oldCron = cronFormat;
        $http.post("updateCronChange.php",cron_format=" + cronFormat, function (data) {
            alert('cron format changed to:' + cronFormat);
        });
    }
}

oldCron最初の初期化後に ng-init を更新して無視するにはどうすればよいですか??

4

1 に答える 1

1

ng-initHTML のレンダリング中に が呼び出されるため、要求された処理を行うことができません。

これを行うのではなく、angular の angular run/config フェーズ内で変数を設定できます。

コード

app.run(function($rootScope, myService){
 //set the variable inside $rootScope, this will available for any controller
 $rootScope.myVariable = 'setFromRunPhaseUsingRootScope';
 //you can use sharable service variable to set data, and use that inside your controller
 myService.myVariable = 'setFromRunPhaseUsingService'
});

これがあなたを助けることを願っています。

于 2015-02-13T20:37:52.833 に答える