强制单向绑定,同时将变量分配给另一个变量

Force one way binding while assigning variable to another variable

本文关键字:变量 分配 另一个 绑定      更新时间:2023-09-26

我正在尝试将一个变量分配给另一个变量,并尝试只执行单向绑定。但是当视图中的值更新时,它也会更新为原始变量。如何在将变量分配给另一个变量时停止这种双向绑定。

例如:

function personController ($scope) {
    var templateValue= "original value";
    $scope.myVal= templateValue;
}

在视图:

<input type="text" ng-model="myVal" />

结果:

当我们在文本框中键入某些内容时,它会更新myValtemplateValue中的值,即templateValue中的值更改为我刚刚在输入框中键入的任何内容。有没有办法将变量分配给另一个只做单向绑定的变量?我想要$scope.myVal和输入框之间的双向绑定,而不是templateValue和输入框之间的双向绑定。

你不能"强制单向绑定",因为 JavaScript 的工作很糟糕。

在您的示例中,更新myVal实际上不会更新templateValue

function personController($scope) {
    var templateValue = "original value";
    $scope.myVal = templateValue;
}

如果您有以下结构,那么是的,更改myVal.test将更新templateValue.test因为它们都引用内存中的同一对象。

function personController($scope) {
    var templateValue = { test: "original value" };
    $scope.myVal = templateValue;
}

如果希望myValtemplateValue引用不同的对象但具有相同的内容,请创建原始对象的副本:

$scope.myVal = angular.copy(templateValue);

我还建议通过引用和值来熟悉Javascript。