2017-01-30 12 views
0

мелкий вопрос (возможно логическое err), я пытаюсь установить флажок автоматически обновлять его после щелчка и в то же время используя остальные api для PUT изменения в БД и работает MUTO PUT, он обновляет БД, но он не обновляет состояние флажка только в том случае, если я обновляю страницу, этот флажок будет обновляться.ng-click с ng-checked не обновляет состояние флажка

И у меня есть этот простой код:

<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 и Оно деталь A. ` когда я устанавливаю флажок.

Спасибо!

+0

использование нг-модель вместо нг проверил обновить флажок. – Ajay

+0

Я пробовал, не работает, флажок не обновляется, когда я нажимаю его, событие запускается, но при перемещении на флажке в front-end – Xao

+0

добавить plkr или скрипку. –

ответ

-2

Попробуйте ng-model вместо ng-checked. Переключатель выглядит ненужным. ng-change также может использоваться для запуска запроса. В своих документах они точно решают проблему, которую вы описываете. https://docs.angularjs.org/api/ng/directive/ngChange

+0

Было бы полезно, если бы вы объяснили достоинства 'ng-model', а не просто заявили, что OP должен его использовать. * Почему он должен это делать и * как *. –

+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

HI, это совсем не помогает, на самом деле, я хочу что-то совершенно другое. Моя проблема заключается не в том, как использовать эту концепцию, а в том, что флажок не проверяется или не проверяется, когда я нажимаю на него, а setState изменяет его состояние и обновляет базу данных. – Xao

+0

См. Этот пример https://jsfiddle.net/KarthikParameswaran/a6jq1mk7/, checkbox отлично работает для меня. –