0

編集: ng-dbclick が機能しないか、ここで使用されます。

オリジナル:

ボタンがあります。一度クリックすると、期待どおりに動作します。もう一度クリックしても動かない。1分ほど待つと、うまくいきます。ボタンに関連付けられた私の関数には多くのリターンがあり、他の関数を呼び出す if ループがありますが、毎回完全に機能します。ここでは、ダブルクリック機能を実装しました (したがって、カウンターは 1 と 2 であり、機能します)。プロジェクトはダブルクリックすると完了としてマークされます。

ここでのダイジェストまたは評価サイクルをおそらく理解していないか、 $scope.apply() を使用する必要があるかもしれません...基本的に、これらの概念またはそれらをどこで使用するかをまったく理解していません。ネストされた関数に $http get および post リクエストがあります。

HTML ファイルのコード:

<button ng-click="resumeorpauseproject(project, project.id)">Click me</button>

コントローラ ファイルのコード:

$scope.resumeorpausecounter = 0;

$scope.resumeorpauseproject = function(value1, value2){


        $scope.resumeorpausecounter = $scope.resumeorpausecounter + 1;


        $timeout(function () {
            if ($scope.resumeorpausecounter == 1) {


                $scope.resumeorpauseproject1(value1, value2);
                return;

            }

            if ($scope.resumeorpausecounter == 2) {

                /*$scope.resumeorpausecounter = false;*/


                $scope.markprojectascomplete(value1, value2);
                return;

            }


        }, 300);


};
4

1 に答える 1

0

http://plnkr.co/edit/FNrP5Q9ivQR55zuLTa6U?p=preview

あなたがやろうとしていることはクレイジーです。

適切にモデル化し、ng-dblclick を使用するだけです。ケースを正しく理解していれば、実際に $digest も $apply も適用する必要はありません。

機能の観点から考えると、あなたが持っているのはプロジェクトであり、ダブルクリックすると完了としてマークされ、シングルクリックで開始と停止を切り替える必要があります: 関連する js は次のとおりです。

 project.state = {
     started: false,
     completed: false,
     toggleStarted: function toggleStarted(){
       this.started = !this.started;
     },
     markCompleted: function markCompleted(){
       this.completed = true;
     }
 };

そして、ここに関連するhtmlがあります:

<button 
    data-ng-click="project.state.toggleStarted()"
    data-ng-dblclick="project.state.markCompleted()"
>
    Click me
</button>
于 2015-10-09T22:31:13.757 に答える