繁体   English   中英

如何使用AngularJS $ scope?

[英]How to use AngularJS $scope?

我有一个段落和一个柜台。 当有人使用AngularJS点击段落时,我想更新计数器。 我写了以下代码:

<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

</head>
<body>

<p>Click on this paragraph.</p>

<div ng-app="myApp" ng-controller="myCtrl">

<h2>{{ count }}</h2>
</div>
<script>
var $ang;
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
    $ang=$scope;
    $ang.count=10;
});
$(document).ready(function(){
    $("p").click(function(){
        console.log("The paragraph was clicked.");
        $ang.count=$ang.count-1;
    });
});
</script> 
</body>
</html>

但它不起作用。 我想我以错误的方式使用$scope但我不确定如何解决它。

不要与jQuery混合角度!

而是按照有角度的方式进行操作,只需在主体上移动ng-appng-controller指令就可以将所有东西包裹在角度上下文中,然后ng-click p标签并在那里执行所需的任务

标记

<body ng-app="myApp" ng-controller="myCtrl">
   <p ng-click="increamentCount()">Click on this paragraph.</p>
   <div>
       <h2>{{ count }}</h2>
   </div>
<body>

var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
    $scope.count = 10;
    $scope.increamentCount = function(){
      $scope.count = $scope.count + 1;
    }
});

演示Plunker

它应该是:

<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

</head>
<body>   

<div ng-app="myApp" ng-controller="myCtrl">
<p ng-click="click()">Click on this paragraph.</p>
<h2>{{ count }}</h2>
</div>
<script>
var $ang;
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
    $scope.count = 10;
    $scope.click = function(){
         $scope.count=$scope.count-1;
    }
});
</script> 
</body>
</html>

您的代码中有几个错误。 我已经重构了一下。 确保正确使用ng-appng-controller 不要将jquery与angular结合使用。 您可以使用$ watch函数观察范围更改 - 此方法在计算方面很昂贵,不应过度使用。

<!DOCTYPE html>
<html ng-app="myApp">
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

</head>
<body>

<div ng-controller="myCtrl">
    <p ng-click="onClick()">Click on this paragraph.</p>

    <h2>{{ count }}</h2>
</div>

</div>
<script>


angular
    .module('myApp', ['ng'])

    .controller('myCtrl', function($scope) {
        $scope.count = 10
        $scope.onClick = function () {
            $scope.count--
        }

        // this is how you can observe state
        // changes outside of event handlers
        $scope.$watch('count', function(newValue, oldValue) {
            console.log("The paragraph was clicked.")
        })
    })
</script>
</body>
</html>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM