angularjs从服务启动控制器范围

时间:2014-11-01 05:46:08

标签: angularjs

我希望能够在路由更改之间保留范围数据,因此我创建了一个服务,将保存的数据返回给控制器,以便在范围内启动。

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

我做错了什么?

1 个答案:

答案 0 :(得分:1)

这是因为answers[1]是一个对象引用,并将其值赋给另一个变量表示该变量是对该对象的引用。要获取该值的副本,您可以使用angular.copy()复制它。

只需将getFirstAnswer()函数更改为以下内容:

DEMO

getFirstAnswer: function () {
  return angular.copy(answers[1]);
}