AngularJS:绑定到ng repeat会模糊转发器内的输入
我这里有一个类似的问题: 这是小提琴: 我的问题是,我还有一个save函数,在用户键入时调用它 因此,我有这样一个例子(后端可能有对$scope.piece.movements的操作。当对象作为response.data返回时,它会重新设置$scope.piece.movements,并在该点失去焦点AngularJS:绑定到ng repeat会模糊转发器内的输入,angularjs,angularjs-ng-repeat,ng-repeat,Angularjs,Angularjs Ng Repeat,Ng Repeat,我这里有一个类似的问题: 这是小提琴: 我的问题是,我还有一个save函数,在用户键入时调用它 因此,我有这样一个例子(后端可能有对$scope.piece.movements的操作。当对象作为response.data返回时,它会重新设置$scope.piece.movements,并在该点失去焦点 $scope.save = function () { $http.post('/save/', { object: $scope.piece.movements }).then(functi
$scope.save = function () {
$http.post('/save/', { object: $scope.piece.movements }).then(function (response) {
$scope.piece.movements = response.data; // loses focus here
});
};
如果有人知道我如何在fiddle/plnkr中模拟post/save,我会很乐意更新我的fiddle。与其使用函数,不如使用$watch来更改片段。然后在watch中,您可以执行逻辑来确定这是否是正确的时间(请参阅超时逻辑)触发更改并调用工厂执行保存。如图所示,此操作不会失去焦点
var app = angular.module('app', [])
.controller('controller', function($scope, $timeout, dummy) {
$scope.piece = {};
$scope.piece.movements = [{name: "Allegro"} , {name: "Presto"}];
var saveTimeout;
$scope.$watch('piece.movements', function(){
$timeout.cancel(saveTimeout)
saveTimeout = $timeout(function(){
dummy.save($scope.piece.movements, function(data){
$scope.piece.movements = data;
console.log($scope.piece.movements);
})
}, 1500);
}, true);
})
.factory('dummy', function(){
var changes = {
content: "",
save: function(content, callback){
this.content = content;
callback(this.content);
},
get: function() {
return this.content;
}
};
return changes;
});
为什么不仅仅是$watch-piece。更改的移动并将这些更改发布到保存服务/工厂。可能是这样的感谢您的快速响应,我不能使用$watch,因为我不想让它在每个字母上都被触发。我让它在用户停止键入时触发保存。您如何处理?根据只会如果用户在x时间(示例中为1.5秒)内未键入,则触发。也可以使用其他逻辑样式。