角度双向数据绑定

时间:2016-10-11 10:52:34

标签: angularjs data-binding

我在这里问这个问题,因为我似乎错过了一些东西。我可以很好地编辑2个项目。我甚至可以对结果进行计算,例如数字/ 2。

我遇到的问题是实时变化的结果。一些代码:

   var app = angular.module('base_app', []);

   app.controller('testCtrl', ['$scope', function($scope){

   $scope.percentage = 50;

   $scope.total = $scope.percentage / 2;
   }]);

和html内容:

   <div class="col-sm-12" ng-controller="testCtrl">
      <input type="text"  ng-model="percentage" />
      <p>{{percentage}}</p>
  </div>

  <div class="col-sm-12" ng-controller="testCtrl">
    <p>{{total}}</p>
  </div>

所以我想做的是,当通过2路数据绑定更新$ scope.percentage时,我也希望$ scope.total也能更新。

如果百分比是50,那么总数将是25.如果我将输入更改为20,那么总数应该更新为10,但不是,这就是我被困住的地方。

2 个答案:

答案 0 :(得分:0)

你应该用ng-change

来做
<div class="col-sm-12" ng-controller="testCtrl">
      <input type="text" ng-change="Update()"  ng-model="percentage" />
      <p>{{percentage}}</p>
  </div>

在控制器中,

$scope.Update = function (){
  $scope.total = $scope.percentage / 2;
}

<强> DEMO

答案 1 :(得分:0)

我认为你必须将父div标签和初始化控制器放到该div。

对于前。

<div ng-controller="testCtrl">
  <div class="col-sm-12">
      <input type="text" ng-model="percentage" ng-change="updateTotal()"/>
      <p>{{percentage}}</p>
  </div>

  <div class="col-sm-12">
    <p>{{total}}</p>
  </div>
</div>

并在控制器中添加updateTotal()函数

$scope.updateTotal = function (){
  $scope.total = $scope.percentage / 2;
}