我有一个服务将静态JSON数据保存到$scope
变量,如下所示:
$scope.workout = Workouts.get(id);
我使用$scope.workout
和shift()
操纵此slice()
。当我尝试将$scope.workout
设置为来自服务的初始数据时,这不起作用。
$scope.workout = Workouts.get(id);
$scope.workout
已更改。我认为另一个服务调用会刷新数据?我错了吗?如何获取服务中保存的初始数据?
答案 0 :(得分:1)
可以采用1种解决方法,将您的$scope.workout
复制到另一个对象并将其分配回$scope.workout
。
$scope.workout = Workouts.get(id);
var copyObj = angular.copy($scope.workout);
答案 1 :(得分:1)
如果您将其用于编辑功能,请复制该对象以进行编辑,这样就不会影响原始内容。
.alert {
position: relative;
}
在保存功能中,通过合并对象来提交更改。
$scope.workoutTarget = Workouts.get(id);
$scope.workout = angular.copy($scope.workout);
//you're free to make edits to $scope.workout without affecting the service
现在angular.merge($scope.workoutTarget, $scope.workout)
将对其应用修改。
答案 2 :(得分:0)
虽然我不确定你的代码在哪里出错(我在AngularJS上并不是那么棒!)你可以使用的快速黑客是: 将初始数据分配给新的范围变量然后从我们的新范围变量中分配锻炼变量。现在我们可以随时从我们的新变量中刷新锻炼。
答案 3 :(得分:0)
object
是引用类型。那么为什么从service
返回它,它会返回reference
。这意味着你有2 reference
到同一个对象(来自服务和范围)。因此,如果您从一个引用更改对象,它也将被更改为另一个引用。
你需要复制你的对象。
只需你可以通过
angular.copy(Workouts.get(id), $scope.workout);
在控制器中使用$scope.workout
。
答案 4 :(得分:-1)
您可以尝试使用$ route.reload来刷新注入的数据。