AngularJS ng-click不起作用,但ng-change是,当调用相同的函数时



EDIT 代码都是正确的,问题是因为包含"ngTouch",请参阅下面的我自己的答案。

可能在这里犯了一些愚蠢的错误,但对于我的生活,我找不到它。我有这段标记,它与控制器正确连接:

<input type="text" ng-change="doStuff()" ng-model="stuff"/>
<button ng-click="doStuff()">doStuff</button>

控制器代码:

console.log('Hi from controller');
$scope.stuff = "something";
$scope.doStuff = function() {
   alert('doing stuff');
}

问题是当我单击按钮时没有任何反应。如果我更改输入字段,我会收到警报,因此 ng-change 有效,但 ng-单击不起作用。如果这还不够信息,请告诉我,但我不知道还能提供什么,而且一般设置似乎工作正常......

HTML的其余部分不包含任何Angular指令,它在myModule.config中是这样加载的:

$stateProvider
    .state('stuff', {
            templateUrl: 'pages/stuff.html',
            url: '/stuff',
            controller: 'StuffCtrl'
     })

控制器定义如下:

angular.module('myModule')
    .controller('StuffCtrl', function ($scope) {
        // above code
    });

事实证明,问题出在另一个依赖项"ngTouch"上。我没有使用它,但它仍然被加载。我的模块甚至不依赖于它。(我从这里使用该管理网站模板:http://startangular.com/product/sb-admin-angular-theme/)。删除ngTouch的加载后,它按预期工作。我也会将其作为两个项目的错误提交......感谢您的帮助!

最新更新