当第一次绑定发生时,我希望列表重新绑定数据当选择输入(id为'checkin')发生变化时,我该怎么办?
var m = angular.module('users', []);
m.controller('UserList', function($scope) {
$scope.getdata = function() {
var u = "http://www.example.com/admin?queryusers";
var userlist = this;
var body = {
activityid: "10",
checkin: $('#checkin').val()
};
$.ajax({
url: u,
type: "post",
async: false,
data: body,
success: function(data) {
userlist.users = data;
}
});
return userlist.users;
};
this.users=$scope.getdata();
$('#checkin').change(function() {
this.users=$scope.getdata();
$scope.$apply();
});
});
答案 0 :(得分:0)
你的问题是你在缺少的angularjs中使用jQuery 角度摘要周期,这就是为什么绑定不会在html上更新。
你不应该在角度内部使用$.ajax
,这会与角度消化周期混淆,你需要使用$http
调用来安全地进行ajax调用,&在ajax完成后更新绑定。
此外,您不应该在角度内的元素上使用jquery事件,您必须替换该更改事件以使用ng-change
,然后无需担心摘要周期。
<强>标记强>
<input type="checkbox" id="checkin" ng-model="myCheckbox" ng-change="getdata()"/>
<强>控制器强>
var m = angular.module('users', []);
m.controller('UserList', function($scope, $http) {
$scope.getdata = function() {
var u = "http://www.example.com/admin?queryusers";
var userlist = this;
var body = {
activityid: "10",
checkin: $('#checkin').val()
};
$http({
url: u,
method: "post",
//async: false,
data: body,
}).success(function(data) {
userlist.users = data;
});
};
this.users = $scope.getdata();
//below code will call getdata directly from html on ng-change
//$('#checkin').change(function() {
// this.users = $scope.getdata();
// $scope.$apply();
//});
});