AngularJS范围变量Unwatch
AngularJS Scope variable Unwatch
我想在程序中的某个点之后取消观察一个Angular范围变量。
以下是我要关注的内容。
$scope.oldVar = {data: "Something"}
$scope.blankArray = []
$scope.blankArray.push($scope.oldVar)
现在,无论我对$scope.oldVar做了什么更改,它都反映了我在屏幕上看到的对blankArray的更改。
有什么方法可以限制这种情况吗?
使用angular.copy
可以使用angular.copy
创建数据的新副本。这将阻止数据被绑定到blankArray
内。
因此,在应用程序中的某个时刻,要解除值的绑定,可以使用angular.copy
。
$scope.blankArray = angular.copy($scope.blankArray)
龙来了
解除值绑定的问题是,您将引入复杂性,因为您的控制器现在需要知道值何时绑定以及何时未绑定。这引入了一个需要管理的额外状态,您的所有逻辑现在都需要有这种意识。
演示
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>
相关文章:
- 将函数的上下文应用于javascript变量
- 无法导出函数expressjs/requestjs中的变量
- 函数参数中的数据与指定变量之间的任何性能差异
- 将PHP变量传递给jQuery时遇到问题
- 如何通过ajax刷新JSF填充的javascript变量
- 参数变量出现ngTable指令问题
- 通过javascript重定向html传递php变量
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 全局变量和全局对象的属性之间有什么区别吗
- 如何在Bootstrap Modal中为动态点击生成的变量设置jade属性
- 值对象在某个变量发生更改后发生更改
- Javascript变量赋值|
- AngularJS-在JSON选择器中使用变量名
- Javascript计数器变量未显示正确的值
- delete关键字在全局变量上的不同行为
- 如何在php变量中嵌入JQuery代码
- ReactJS映射:如何仅在url变量不为空时呈现html链接
- 在javascript函数中设置全局变量
- 将变量传递给外部Javascript
- AngularJS范围变量Unwatch