我有一个类似的问题在这里:https://groups.google.com/forum/!味精/角度/eB19TlFHFVE/Rlh——XImXeYJ
这是小提琴:http://jsfiddle.net/KGu9n/25/
我的问题是,我也有一个保存函数,在用户输入时被调用。
所以我有这样的东西(其中可能有操纵$scope.piece。后端移动。当对象作为响应返回时。数据,它重新设置$scope.piece。运动,在这一点上失去焦点。
$scope.save = function () {
$http.post('/save/', { object: $scope.piece.movements }).then(function (response) {
$scope.piece.movements = response.data; // loses focus here
});
};
任何帮助将是伟大的!如果有人知道我如何在小提琴/plnkr中模拟post/save,我会很乐意更新我的小提琴。
比起使用函数,在这里使用$watch来查看片段的更改会更好。然后在watch中,您可以执行逻辑来确定这是否是触发更改的正确时间(请参阅超时逻辑),并调用工厂来执行保存。如图http://jsfiddle.net/xmltechgeek/HbDDf/所示,此功能不会失去焦点。
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;
});