javascript - AngularJS Scope variable Unwatch -


i want unwatch 1 angular scope variable after point in program.

here following.

$scope.oldvar = {data: "something"} $scope.blankarray = [] $scope.blankarray.push($scope.oldvar) 

now whatever changes doing $scope.oldvar, reflecting changes blankarray viewing on screen.

is there way in angular restrict that?

use angular.copy

you can use angular.copy create new copy of data. prevent data being bound within blankarray.

so @ point in application, unbind values, can use angular.copy.

$scope.blankarray = angular.copy($scope.blankarray) 

here dragons

the problem unbinding value you'll introducing complexity controller needs aware of when value bound , when isn't bound. introduces state manage , logic needs have awareness.

demonstration

function ctrl($scope) {      $scope.oldvar = {data: "something"};      $scope.blankarray = [];      $scope.blankarray.push($scope.oldvar);      $scope.withoutcopy = []      $scope.withoutcopy.push($scope.oldvar);            $scope.change = function() {          $scope.oldvar.data = math.random();      };          $scope.unbind = function() {          $scope.blankarray = angular.copy($scope.blankarray);      };  };
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>  <div ng-app ng-controller="ctrl">      <button ng-click="change()">test</button>      <button ng-click="unbind()">unbind</button>      <pre>{{ blankarray | json }}</pre>      <pre>{{ oldvar | json }}</pre>      <pre>{{ withoutcopy | json }}</pre>  </div>


Comments

Popular posts from this blog

c# - SharpSsh Command Execution -

python - Specify path of savefig with pylab or matplotlib -

How to run C# code using mono without Xamarin in Android? -