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

时间:2014-12-01 23:11:58

标签: javascript angularjs

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

例如:

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

    $scope.myVal= templateValue;
}

在视图中:

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

结果:

当我们在文本框中输入内容时,它会更新myValtemplateValue中的值,即templateValue中的值会更改为我刚输入框中输入的内容。有没有办法将变量赋值给另一个仅进行单向绑定的变量?我想在$scope.myVal和输入框之间进行双向绑定,但不要在templateValue和输入框之间进行绑定。

1 个答案:

答案 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;
}

如果您希望myValtemplateValue引用不同的对象但具有相同的内容,请复制原始对象:

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

我还建议您熟悉Javascript by reference vs. by value