2015-10-22 3 views
0

Я использую ui.router с AngularJS. У меня есть разрешенное зависимость в моем маршруте здесь:AngularJS, создающий зависимую переменную static

.state('root.resume', { 
    url: "/resume", 
    templateUrl: "resume/index.html", 
    title: "Resume", 
    controller: "ResumeCtrl", 
    resolve: { 
     resume: ['ResumeFactory', function(ResumeFactory){ 
     return ResumeFactory.get().$promise; 
     }] 
    } 
    }) 

Я в том числе зависимость в мой контроллер здесь:

(function() { 
    'use strict'; 

    angular 
    .module('controllers.resume', []) 
    .controller('ResumeCtrl', [ 
    '$scope', 'resume', 
    function($scope, resume) { 

     $scope.resume = resume; 
     $scope.resume_2 = resume; 

     $scope.cancel = function(obj) { 
     $scope.resume[obj] = this.resume[obj]; 
     } 

    }]); 
})(); 

На мой взгляд, когда я внести изменения в $ scope.resume, это также изменяет $ scope.resume_2. Почему это происходит? Есть ли способ сделать это так, чтобы $ scope.resume_2 не изменился в зависимости от $ scope.resume?

Спасибо!

ответ

1

Это потому, что как $scope.resume и $scope.resume_2 держать ту же ссылку на объект (resume), таким образом, когда вы что-то изменить в этом объекте, оба ваших $ переменных области будут иметь изменения отражаются, так как оба имеют ту же ссылку, вам может, однако, создать копию с угловым:

$scope.resume = angular.copy(resume); 
$scope.resume_2 = resume; 
+0

Спасибо, это именно то, что я искал. Я также ценю ваше объяснение, я всегда стараюсь узнать больше :) –

+0

Нет проблем. Рад помочь :) – taxicala

Смежные вопросы