我有一个从工厂获取数据的控制器,如下所示:
.controller('ChatDetailCtrl', function($scope, $stateParams, Messages) {
$scope.messages = Messages.get($stateParams.partnerId);
$scope.send = function (input) {
input.id = Math.random();
input.sent = true;
input.time = new Date();
$scope.messages.data.push(input);
console.log($scope.messages);
}
})
我使用ng-repeat在模板上显示消息。然后我有一个输入,使用ng-click运行发送。问题是,当你发送它然后它添加到数组,但是如果你继续输入然后它更新发送的消息,而不是允许你发送一个新消息。
如何以一种允许我重复多次的方式将输入传递给数组?
答案 0 :(得分:1)
尝试使用angular.copy,这样你就不会推送相同的引用,而是一个类似于输入的全新对象
.controller('ChatDetailCtrl', function($scope, $stateParams, Messages) {
$scope.messages = Messages.get($stateParams.partnerId);
$scope.send = function (input) {
input.id = Math.random();
input.sent = true;
input.time = new Date();
$scope.messages.data.push(angular.copy(input));
console.log($scope.messages);
}
})
答案 1 :(得分:0)
在没有看到你的标记和/或input
的结构的情况下,这就是诀窍:
JsBin:http://jsbin.com/xevabevi/10/edit
像Charminbear所说,在推送到messages数组后,你需要以某种方式清除输入数据。
或者,您可以在推送中执行以下操作:
$scope.arr.push(angular.copy(input));
这样你就不会将输入数据推送到数组,而是推送它的副本。但是,这不会清除您的输入字段,因为原始input
将保持不变。