使用按钮时Angular JS双向绑定不更新

时间:2016-09-02 06:16:03

标签: angularjs angularjs-scope

我有点角色并且有一个不安全的问题。我试图用一个函数更新绑定到我的控制器中div的变量,当单击一个按钮时调用该函数。 (该功能通过ng-click绑定到按钮。)单击按钮时,即使变量已更改,显示的值也不会更改。但是,如果我为元素本身分配相同的更新函数,那么当我单击该元素时它会发生变化。谁能解释一下? 这是我的代码:

的Javascript

angular.module('Compendium',['ngRoute'])
.config(function($routeProvider){
    $routeProvider.when('/css',{
        templateUrl:'css.html', 
        controller: 'cssCtrl'
    })
}).controller('cssCtrl',function($scope,counterhelper){
    //counterhelper($scope.data)
//counter.increment();

    $scope.increment = function(){
        alert('hey');
      $scope.display = 'Nothing'
    }
     $scope.display = 1;

      // var transform = function(){
      //  

}).factory('counterhelper',function(){
    var addOne = function(val){
        val ++;
    }
    return addOne;
})

和Html

<html ng-app = "Compendium">
<head>
<script src = "node_modules/angular/angular.js"> </script>
<script src = "node_modules/angular-route/angular-route.js"> </script>
<script src = "app.js"></script>
<script type="text/ng-template" id="css.html">
  <h1 ng-controller = 'cssCtrl' ng-click='increment()'>
    {{display}}
    </h1>
    <button ng-click = 'increment()' >Increment</button>
</script>
</head>
<body>
<div ng-view>
</div>
</body>

</html>

谢谢!

1 个答案:

答案 0 :(得分:3)

这里的问题是你的控制器在按钮之外,因此它无法识别附加的控制器,将其包装在div中

<div ng-controller = 'cssCtrl'>
  <h1  ng-click='increment()'>
    {{display}}
  </h1>
  <button ng-click = 'increment()' >Increment</button>
</div>