另一个ng-click()没有按预期工作

时间:2016-04-20 22:01:14

标签: javascript angularjs

我确信这是一个基本的东西,但我找不到它。我正在尝试将数据发送回控制器。我相信ng-click事件没有触发。这是我试图调试这个问题。我相信我已经把它剥离到了一个简单警报的基本要素..

这是控制器和局部视图



angular.module('FieldApp', [])
  .controller('FieldCtrl', function($scope, $http) {
    $scope.createField = function($scope, $http) {
      alert("Create Field");

    }
  })

 
<script src="./bower_components/angular/angular.js"></script>
<script src="./bower_components/angular-route/angular-route.js"></script>

<div class="container" ng-app="FieldApp" ng-controller="FieldCtrl">
  <button type="button" class="btn btn-primary btn-lg btn-block" ng-click="createField()">Add Field</button>
</div>

<script src="./js/field.js" charset="utf-8">
&#13;
&#13;
&#13;

欢呼声

4 个答案:

答案 0 :(得分:0)

函数中的依赖项参数是不必要的。只需声明这样的函数:

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

您需要引用$window依赖项来显示警报:

$window.alert("Create Field");

请勿忘记控制器的依赖项列表中的包含$window.controller('FieldCtrl', function($scope, $http, $window) {)。

但是,做console.log("Create Field");代替它会更好。

答案 1 :(得分:0)

不需要窗口参考。这就是我编写代码的方式。我不确切知道您的代码中发生了什么,但为模块设置变量通常是一种好习惯。

<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Test</title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.8/angular.min.js"></script>
<script>

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

    app.controller('FieldCtrl', ['$scope', function($scope) {
        $scope.createField = function() {
             alert("Create Field");   
        };

    }]);
</script>

</head>
<body>
    <div ng-app="FieldApp">
        <div ng-controller="FieldCtrl">
            <button ng-click="createField()">Add field</button>
        </div>
    </div>
</body>
</html>

此代码段在我的机器上运行。

答案 2 :(得分:0)

我发现您的代码没有任何问题。我从中创建了一个jsFiddle: https://jsfiddle.net/gcsgggcw/

我刚从你的html中删除了javascript链接:

<div class="container" ng-app="FieldApp" ng-controller="FieldCtrl">
   <button type="button"  ng-click="createField()">Add Field</button>
</div>

原因必须是别的;你检查过浏览器中是否正确加载了所有的javascript文件吗?

答案 3 :(得分:0)

解决方案是未正确格式化变量名称的情况。我将myApp放在一个文件中,将MyApp放在另一个文件中。自从我使用文本编辑器而不是Visual Studio以来已经很多年了。