1

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

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

对于我的项目,我使用的是 AngularJS 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");
        };
    }
]);

当我加载页面时,“你好”出现,但按下按钮什么也不做(控制台中没有错误,它不在表单内)。

我已经看到了一些使用 data-ng-click 的示例,但这也不起作用。Angular 文档中的以下示例确实有效,因此我认为我的问题可能是范围问题:

<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 

})();
4

2 回答 2

0

如果页面显示“你好”,那么您的路线正在工作,因此您的控制器。问题可能出在警报上。修改你的

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

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

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

于 2015-04-18T01:01:07.747 回答
0

你需要注入ngRoute:

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

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

工作插件:http: //plnkr.co/edit/IDo6ZRX4a0l5Piz6uzbA

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

于 2015-04-18T01:31:36.863 回答