2017-01-30 12 views
0

小さな質問(論理エラーの可能性があります)、チェックボックスをクリックすると自動的にそれを更新し、同時に残りのAPIを使用して変更をPUTしますDB内で、PUT mothodが動作している場合、DBを更新しますが、ページを更新する場合にのみチェックボックスの状態を更新しません。チェックボックスが更新されます。ng-check with ng-checkチェックボックスの状態を更新しないでください。

そして、私はこの単純なコードがあります。このよう

<input type="checkbox" ng-checked="action.state" ng-click="setState($event, key, action)"><div class="track"><div class="handle"></div></div> 

とバックエンド:

.controller('Actions', function ($scope, $filter, $resource, $ionicActionSheet, $ionicModal) { 
    var actionListResource = $resource('/api/actions/'); 

    actionListResource.query(function (data) { 
     $scope.actions = data; 
    }); 

    $scope.setState = function (event, index, action) { 

     if (action.widget === 'toggle' && action.state === 1) { 
      action.state = 0; 
     } 
     else { 
      action.state = 1; 
     } 

     event.preventDefault(); 

     var actionsResource = $resource('/api/actions/:actionId/', {actionId:'@id'}, { 
      'update': { 
       method: 'PUT' 
      } 
     }); 
    }; 
    ...more code here 
}) 

action.stateは常に1または0の値で、私は$scope.actions[index].stateとit`をチェックしましたがチェックボックスをクリックすると自動的に更新されます。

ありがとうございました!

+0

利用NG-モデルの代わりに、NG-確認するチェックボックスを更新します。 – Ajay

+0

私はそれを試しました、うまくいきません、チェックボックスが更新されません、それをクリックすると、イベントがトリガーされますが、フロントエンドのチェックボックスに移動しません – Xao

+0

plkrまたはfiddleを追加してください。 –

答えて

-2

ng-checkedの代わりにng-modelを試してください。トグルは不要です。 ng-changeを使用して要求をトリガーすることもできます。 彼らのドキュメントでは、あなたが説明した問題を正確に解決します。 https://docs.angularjs.org/api/ng/directive/ngChange

+0

OPがそれを使うべきであると述べるのではなく、 'ng-model'のメリットについて説明しておけば助けになります。 *なぜ*彼はそうしなければならないと*どのように*。 –

+0

あなたは合法であるように感謝しますが、私はまた試みました、そして私は巨大な角張ったエラーを持っていました、私は再び今日それを試します、私は更新します、ありがとう。 – Xao

+0

event.preventDefault()がありました - これでした! 私はそれをどのように霧にしているのか分からない! – Xao

0
<html> 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> 
<body ng-app="myApp"> 

<div ng-controller="myCtrl"> 
    <input type="checkbox" ng-model="action" ng-click="setState()"> 
</div> 

<script> 
angular.module('myApp', []) 
    .controller('myCtrl', ['$scope', function($scope) { 
    $scope.setState = function() { 
     window.alert($scope.action); 
     // $scope.action value will be true or false 
    }; 
    }]); 
</script> 
</body> 
</html> 
+0

こんにちは、これはまったく助けにはなりませんが、実際は全く違うものが欲しいです。 私の問題は、このコンセプトを使用する方法ではありません。チェックボックスがオンになっているとチェックされていないかチェックされていないため、setStateは状態を変更してDBを更新します。 – Xao

+0

この例をご覧くださいhttps://jsfiddle.net/KarthikParameswaran/a6jq1mk7/、私のためのチェックボックスがうまく動作します。 –

関連する問題