Angularjs 1.3.5 ng-click 不从路由调用控制器中的函数

Angularjs 1.3.5 ng-click not calling function in controller from route

我检查了类似的答案并尝试修改有效的 Plunkers,但在我的项目中做类似的事情失败了(可能是由于他们使用 AngularJS 1.1.0 的示例)。

我已经完成了教程 https://docs.angularjs.org/tutorial,但对 AngularJS 还是很陌生。

对于我的项目,我使用 AngualarJS 版本 1.3.9 和以下模块:

我在使用 ng-click 时遇到问题。

这是我的路由设置:

app.config([
        "$routeProvider", 
        function($routeProvider){
            $routeProvider.

            when("/calendar",{
                templateUrl:"templates/test.php",
                controller: 'TestController',
            }).
        ...
    }
]);

我的test.php:

<button data-ng-click="test2()">Thing</button>
{{test}}

这是我的控制器:

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

appControllers.controller("TestController", 
    ["$scope", 
    function($scope){
        $scope.test = "Hello";

        $scope.test2 = function(){
            alert("okay");
        };
    }
]);

当我加载页面时,"Hello" 出现但按下按钮没有任何反应(控制台中没有错误并且它不在表单内)。

我看过一些使用 data-ng-click 的示例,但这也不起作用。 Angular Documentation 中的以下示例确实有效,所以我认为我的问题可能是范围问题:

<button ng-click="count = count + 1" ng-init="count=0">
  Increment
</button>
count: {{ count }}

任何人都可以确认并指出正确的方向吗?

提前致谢。

更新:

没有任何关于注入的控制台错误,路由工作正常,但我应该包括我的 app.js 以确保完整性(文件还包含我的路由设置,暂时但没什么大不了的还):

(function(){

var app = angular.module(
    // Name of app, linked to ng-app
    'testApp', 
    // Dependencies
    [
     'ngRoute',             // Use the routing service
     'ngResource',
    ]
); 

//The routing part goes here 

})();

如果页面显示 "Hello",那么您的路线正常,您的控制器也正常。问题可能出在警报上。修改你的

$scope.test2 = function(){
        alert("okay");
    };

$scope.test2 = function(){
        $scope.test = "World";
    };

如果页面更新了值,则问题出在您的浏览器禁用了警报。

你需要注入ngRoute:

var appControllers = angular.module('appControllers', ['ngRoute']);

您还需要在您的应用中放置 ng-view 元素 html:

正在工作的 plunker: http://plnkr.co/edit/IDo6ZRX4a0l5Piz6uzbA

注意:双击按钮显示您的警报