我确信这是一个基本的东西,但我找不到它。我正在尝试将数据发送回控制器。我相信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;
欢呼声
答案 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以来已经很多年了。