2014-11-01 6 views
1

경로 변경 사이의 범위 데이터를 보존 할 수 있기를 원했기 때문에 범위에 초기화 할 수 있도록 저장된 데이터를 컨트롤러에 반환하는 서비스를 만들었습니다.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]; 
     } 
    } 
}); 

제 컨트롤러에서는 서비스를 호출하여 첫 ​​번째 대답을 얻습니다.

http://jsfiddle.net/hientc/gj5knrg7/2/

나는 데 문제

app.controller('myController', function ($scope, answerService) { 
    $scope.firstAnswer = answerService.getFirstAnswer();  
    $scope.answers = answerService.getAllAnswers(); 
}); 

은 $ scope.firstAnswer 어떻게 든도 $ scope.answers에 바인더 제본되고 있다는 점이다. 나는 그것을 원하지 않는다. 나는 단지 입력이 scope.firstAnswer.text에 바인드되기를 원한다.

내가 뭘 잘못하고 있니?

답변

1

이것은 answers[1]이 개체 참조이며 해당 값을 다른 변수에 할당하면 해당 변수가 해당 개체에 대한 참조임을 나타냅니다. 해당 값의 복사본을 얻으려면 angular.copy()을 사용하여 복사 할 수 있습니다.

간단하게 이런 식으로 getFirstAnswer() 기능을 변경 :

DEMO

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

덕분에, 그게 해결! – user3213420

관련 문제