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 和以下模块:
- ngResource
- ngRoute
我在使用 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
注意:双击按钮显示您的警报
我检查了类似的答案并尝试修改有效的 Plunkers,但在我的项目中做类似的事情失败了(可能是由于他们使用 AngularJS 1.1.0 的示例)。
我已经完成了教程 https://docs.angularjs.org/tutorial,但对 AngularJS 还是很陌生。
对于我的项目,我使用 AngualarJS 版本 1.3.9 和以下模块:
- ngResource
- ngRoute
我在使用 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
注意:双击按钮显示您的警报