我希望能够在路由更改之间保留范围数据,因此我创建了一个服务,将保存的数据返回给控制器,以便在范围内启动。
app.factory('answerService', function () {
var answers = {
1 : { text : "first answer" },
2 : { text : "second answer" }
}
return {
getAllAnswers: function () {
return answers;
},
getFirstAnswer: function () {
return answers[1];
}
}
});
在我的控制器中,我通过调用服务来获得第一个答案来启动第一个答案。
app.controller('myController', function ($scope, answerService) {
$scope.firstAnswer = answerService.getFirstAnswer();
$scope.answers = answerService.getAllAnswers();
});
http://jsfiddle.net/hientc/gj5knrg7/2/
我遇到的问题是$ scope.firstAnswer以某种方式绑定到$ scope.answers。我不希望这样,我只希望输入绑定到scope.firstAnswer.text
我做错了什么?
答案 0 :(得分:1)
这是因为answers[1]
是一个对象引用,并将其值赋给另一个变量表示该变量是对该对象的引用。要获取该值的副本,您可以使用angular.copy()
复制它。
只需将getFirstAnswer()
函数更改为以下内容:
getFirstAnswer: function () {
return angular.copy(answers[1]);
}