2017-01-30 42 views
0

小问题(可能是一个逻辑err),我试图让复选框在点击它之后自动更新自己,并在同一时间使用其余api来PUT更改在数据库中,并且PUT方法可以工作,它会更新数据库,但只有在刷新页面时才会更新复选框状态,复选框将会更新。ng-click with ng-checked not updating复选框状态

我有这个简单的代码:

<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或小提琴。 –

回答

-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

嗨,这完全没有帮助,事实上,我想要完全不同的东西。 我的问题不是如何使用这个概念,是当我点击它并且setState更改它的状态并更新数据库时,复选框没有被选中或取消选中。 – Xao

+0

请看这个例子https://jsfiddle.net/KarthikParameswaran/a6jq1mk7/,复选框适合我。 –