我试图将变量分配给另一个变量,并尝试只进行一种方式绑定。但是当值在视图中更新时,它也会更新为原始变量。如何在将变量分配给另一个变量时停止这种双向绑定。
例如:
function personController ($scope) {
var templateValue= "original value";
$scope.myVal= templateValue;
}
在视图中:
<input type="text" ng-model="myVal" />
结果:
当我们在文本框中输入内容时,它会更新myVal
和templateValue
中的值,即templateValue
中的值会更改为我刚输入框中输入的内容。有没有办法将变量赋值给另一个仅进行单向绑定的变量?我想在$scope.myVal
和输入框之间进行双向绑定,但不要在templateValue
和输入框之间进行绑定。
答案 0 :(得分:5)
由于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;
}
如果您希望myVal
和templateValue
引用不同的对象但具有相同的内容,请复制原始对象:
$scope.myVal = angular.copy(templateValue);