javascript - ng-click 不起作用

标签 javascript angularjs

我正在编写一个单页 Web 应用程序,主要使用 AngularJS 框架,并且在使用 ng-click 指令时遇到问题。

该指令实际上在单击时不执行任何操作。未调用链接的方法(我无法调试它)。

下面有问题的代码:

模板文件:

<div ng-controller="BonusCtrl as bonusManager">

<!-- [...] --> 
<button style="margin-top: 5px" 
class="btn btn-success" ng-click="add()"><i class="fa fa-plus"/> Règle de calcul</button>

<!-- [...] -->

</div>

Controller :

idServerApp.controller('BonusCtrl', ['$scope', 'webService', 'math', 'DATERANGE_OPTIONS', function ($scope, webService, math, DATERANGE_OPTIONS) {

$scope.add = function() {
    console.log('foo'); // no call
    var newItem = {
        brandId: undefined,
        days: 0,
        priceMinEVAT: 0,
        bonus: 0
    };
    $scope.rules.push(newItem);
};

你知道这个问题吗?


编辑 1

我尝试用add()和BonusCtrl.add()替换bonusManager.add()。 然后我尝试用它替换 $scope,或者删除controllerAs。

Complete JSFiddle (using some of my services)

编辑2

感谢您的回答。我自己找到了解决方案,而且很糟糕。 我忘记了 HTML 模板中的结束 div 标签,因此未定义 Controller 。

最佳答案

我得到了你的代码并制作了一个包含两个案例的运行示例。

第一个使用BonusCtrl

$scope.add = function () {...}

ng-click="add()"

第二个是bonusManager

this.add = function () {...}

ng-click="bonusManager.add()"

对我来说,它应该工作得很好。如果您有任何其他问题,请告诉我。

var app = angular.module('myapp',[]);
app.controller('BonusCtrl', ['$scope', function ($scope) {
    

$scope.add = function() {
    console.log('Hey you\'ve just invoked add() function!'); // no call
    var newItem = {
        brandId: undefined,
        days: 0,
        priceMinEVAT: 0,
        bonus: 0
    };
  };

  this.add = function () {
    console.log('You can invoke function using \' bonusManager.add()'); // no call
  };

}
]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myapp">
  <h1>NG-CLICK EXAMPLE</h1>
    <div ng-controller="BonusCtrl as bonusManager">
    
    <button style="margin-top: 5px" 
    class="btn btn-success" ng-click="add()"><i class="fa fa-plus"/>add()</button>

  <button style="margin-top: 5px" 
    class="btn btn-success" ng-click="bonusManager.add()"><i class="fa fa-plus"/> bounsManager.add()</button>
    </div>
</div>

但是您始终可以使用您的

关于javascript - ng-click 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31657322/

相关文章:

javascript - 使用 jquery/ajax 获取点击将值项编辑到另一个页面

javascript - 如何根据第一次 HTTP 调用获取的 ID 呈现数据

javascript - 指令中的链接功能是否通过路由运行?

javascript - 避免 AngularJS Controller 泄漏私有(private)函数

angularjs - 如果 url 不包含特定路径,则应用重写规则

javascript - 从文本更改更改大小的按钮的 CSS 或 JS 转换?

javascript - 使用 JavaScript 选择特定的 DOM 元素

javascript - Angular 单元测试 : Error: Cannot match any routes. URL 段: 'home/advisor'

javascript - 从数组中的多个中查找百分比并偶然返回整个对象

angularjs - 如果在浏览器中打开多个选项卡/窗口,则会出现 ng-idle 问题