AngularJS Scope Object Inheritance -


hi need angularjs wiz point me in right direction been trying head around angularjs scope , inheritance. have child scope add parent scope want add new object parent scope via array.push(); i'm not sure why child scope inherits new value. see fiddle here http://jsfiddle.net/sjmcpherso/efxuz/ first example using ng-repeat , objects causes child update:

$scope.childarr = [{'name':'peter'},{'name':'paul'},{'name':'perry'}]; $scope.parentarr = $scope.childarr; $scope.parentarr.push({'name':'why in in child array?'})  

whereas second example using variable not:

$scope.childvar = "confused muchly"; $scope.test.parentvar = $scope.childvar; $scope.test.parentvar = "this wont change child variable"; 

ideally make changes child scope update parent scope not other way around.

i have read of https://github.com/angular/angular.js/wiki/understanding-scopes while not understanding issue seems mystery me.

firstly, both of models $scope.childarr , $scope.test.parentarr in $scope of controller. none of them in parent scope.

if want have parentarr in parent scope, should have parent-child controller design or move model inside rootscope:

$rootscope.test = {}; $rootscope.test.parentarr = [ /* items here */ ]; 

secondly, $scope.childarr , $scope.test.parentarr both point same array. changing either of them mean changing both of them.

it same doing:

$scope.test = {}; $scope.childarr = $scope.test.parentarr = [     {'name':'peter'},     {'name':'paul'},     {'name':'perry'} ]; 

if want create separate copies changing 1 of them not affect other, can use angular.copy():

$scope.test.parentarr = angular.copy($scope.childarr); 

Comments

Popular posts from this blog

ios - UICollectionView Self Sizing Cells with Auto Layout -

node.js - ldapjs - write after end error -

DOM Manipulation in Wordpress (and elsewhere) using php -