我有以下代码:
<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一样发生事件吗?
答案 0 :(得分:0)
您应该使用 ng-change ,例如:
ng-change="updateMCQ(data.surveyPropertyId,data)"
答案 1 :(得分:0)
您可以使用ng-change
,如@Jenny所说,它将对您有用。
这是代码,
<!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;
请运行以上代码。
答案 2 :(得分:0)
我发现了这个问题,这是一个愚蠢的问题。当我拨打$(&#39; .updatable.mcq.ng-dirty&#39;)。触发(&#39;点击&#39;)或进行更改时,它实际上会更改,现在元素值已更改。 !!。