ng-click不发送更新的值

时间:2017-02-13 11:53:14

标签: angularjs

我有以下代码:

<div class="input-field col s3" ng-repeat="data in content.data">
<input class="updatable mcq"
        ng-disabled="!viewMode" 
        type="checkbox"
        id="mcq{{data.surveyPropertyId}}"
        ng-click="updateMCQ(data.surveyPropertyId,data)"
        ng-model="data.value"/>
<label for="mcq{{data.surveyPropertyId}}">{{data.name}}{{data.value}}</label>

$scope.updateMCQ = function(surveyPropertyId,newValue){
                                console.log(newValue);
                            }

问题是它在updateMCQ函数中显示了data.value的正确值

但如果我在此输入元素上触发click事件,则会显示先前选择的值。例如,如果选中复选框,则会发送false。

{{data.name}} {{data.value}}正在评估和更改,因为选中/取消选中此元素

可能是什么问题

更新:

我发现了这个问题,这是一个愚蠢的问题。当我调用$('。updatable.mcq.ng-dirty')。触发器('click')或进行更改时,它实际上会发生变化,现在元素值已经改变了。

现在任何人都可以指导我如何创建一个自定义指令,它会像点击或更改angularjs一样发生事件吗?

3 个答案:

答案 0 :(得分:0)

您应该使用 ng-change ,例如:

ng-change="updateMCQ(data.surveyPropertyId,data)"

答案 1 :(得分:0)

您可以使用ng-change,如@Jenny所说,它将对您有用。

这是代码,

&#13;
&#13;
<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<body>

<div ng-app="myApp" ng-controller="myCtrl">

<div class="input-field col s3" ng-repeat="data in content">
<input type="checkbox" ng-model="data.value" ng-change="updateMCQ('data.surveyPropertyId',data)"> click and check console

{{data}}

</div>
</div>

<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
    $scope.firstName = "John";
    $scope.content =[{ value: false },{ value: false },{ value: true }]
    $scope.updateMCQ = function(surveyPropertyId,newValue){
              console.log(newValue);
    }
});
</script>

</body>
</html>
&#13;
&#13;
&#13;

请运行以上代码。

Check this demo

答案 2 :(得分:0)

我发现了这个问题,这是一个愚蠢的问题。当我拨打$(&#39; .updatable.mcq.ng-dirty&#39;)。触发(&#39;点击&#39;)或进行更改时,它实际上会更改,现在元素值已更改。 !!。