将变量绑定到控制器内的模型

时间:2014-06-11 23:15:17

标签: javascript angularjs

我试图以编程方式将我的Controller中的变量绑定到绑定到此类输入的模型

<body ng-app="myApp">
    <div ng-controller="MyController">
        <input type="text" ng-model="myVar1" /> {{ myVar1 }}
        <br />
        <input type="text" ng-model="myVar2" /> {{ myVar2 }}
        <br />
        {{ myVar3 }}
    </div>
</body>
var myApp = angular.module('myApp', []);

myApp.controller('MyController', ['$scope', function($scope){
    $scope.myVar3 = $scope.myVar1;
}]);

但正如您在此fiddle中所看到的,当我在第一个输入中输入时,myVar3的值不会改变。我知道在任何语言中,原始变量都是按值复制而不是通过引用复制,因此可以将模型定义为对象,然后将引用复制到myVar3(参见fiddle):

<body ng-app="myApp">
    <div ng-controller="MyController">
        <input type="text" ng-model="myVar1.value" /> {{ myVar1.value }}
        <br />
        <input type="text" ng-model="myVar2.value" /> {{ myVar2.value }}
        <br />
        {{ myVar3.value }}
    </div>
</body>
var myApp = angular.module('myApp', []);

myApp.controller('MyController', ['$scope', function($scope){
    $scope.myVar1 = {};
    $scope.myVar2 = {};
    $scope.myVar3 = $scope.myVar1;
}]);

问题在于,每次我需要将变量与模型进行动态链接时,我都不想创建对象,而且还有更多的角度&#34;使用第一个代码实现相同结果的方法?

谢谢,

1 个答案:

答案 0 :(得分:1)

该行$scope.myVar3 = $scope.myVar1;只会在页面中加载控制器时执行一次。您需要的是将该句子放在绑定到任何输入键事件的控制器函数中。

小提琴:http://jsfiddle.net/dGvm8/