假设我有一个项目列表:
list.html
<div ng-repeat="item in items">
<span ng-click="editItem(item)">{{item.title}}</span><br>
</div>
我想编辑其中一个:
.controller('adminCtrl', ["$scope", "angularFireCollection", function($scope, angularFireCollection) {
var ref = new Firebase("https://example.firebaseio.com/articles");
$scope.items = angularFireCollection(ref);
$scope.editItem = function(item){
$scope.item = item;
$scope.updateView('form');
}
$scope.updateItem = function(item){
$scope.items.update(item);
$scope.updateView('list');
}
$scope.goBack = function(){
$scope.updateView('list');
}
}]);
点击editItem(item)
切换form.html
部分:
form.html
<div>
<button type="button" ng-click="goBack()">Go Back</button>
<input type="text" ng-model="item.title">
<button type="button" ng-click="updateItem(item)">Save</button>
</div>
如果我在goBack()
之前编辑我的当前项目和updateItem(item)
,那些更改会在本地传播 - 但显然不应该因为我还没有更新记录。
如何通过editItem(item)
从其设置的$scope.item
变量中分离传入的firebase对象?
答案 0 :(得分:1)
Chandermani的观点是正确的,但你必须破解克隆的方式:
var clonedItem = angular.fromJson(angular.toJson(item));
这会有效!
答案 1 :(得分:0)
尝试在编辑中使用angular.clone()
方法创建项目的克隆,看看它是否有效
$scope.editItem = function(item){
$scope.item = angular.copy(item);
$scope.updateView('form');
}