有大量使用更新的角度指令的例子,例如ng-blur,ng-focus,form validation等。它们在单个页面或plinkr,jsfiddle等中都很好用,但尝试在全局命名空间上定义函数的人,这个错误是记录良好的。
然而,我遇到了另一个问题。
我使用的是example from Scotch.io。这个很好用......直到你把它介绍到使用angular-route的SPA :(
经过几个小时的战斗,错误'Argument'mainController'不是函数,得到了未定义',我在Hajder Rabiee的评论中找到了答案。谢谢Hadjer,爱你的男人!
答案 0 :(得分:0)
Hajder离开this comment并在其中,他说:
如果你正在使用路由(概率很高)并且你的配置引用了一个未被声明为依赖的模块中的控制器,那么初始化也可能会失败。
假设您已为您的应用配置了ngRoute,例如
angular.module('yourModule',['ngRoute'])
.config(function($routeProvider, $httpProvider) { ... });
在声明路线的区块中要小心,
.when('/resourcePath', {
templateUrl: 'resource.html',
controller: 'secondModuleController' //lives in secondModule
});
在'ngRoute'解决问题后,将secondModule声明为依赖项。我知道我有这个问题。
即使有这个帮助我花了一分钟才能让它工作,所以我想我会在这里分享我的示例代码,以帮助下一个陷入困境的可怜的混蛋。
首先,在我申报路线的地方:
var app = angular.module('sporkApp', ['ngRoute','validationApp']);
app.config(function ($routeProvider) {
$routeProvider
.when('/home',
{
controller: 'HomeController',
templateUrl: 'home/home.template.html'
})
.when('/tags',
{
controller: 'TagsController',
templateUrl: 'tags/tags.template.html'
})
.when('/test',
{
controller: 'mainController',
templateUrl: 'test/test.template.html'
})
.otherwise({ redirectTo: '/home' });
});
然后,您需要在某处添加控制器代码,它将在shell页面中加载:
// create angular app
var validationApp = angular.module('validationApp', []);
// create angular controller
validationApp.controller('mainController', function($scope) {
// function to submit the form after all validation has occurred
$scope.submitForm = function() {
// check to make sure the form is completely valid
if ($scope.userForm.$valid) {
alert('our form is amazing');
}
};
});
最后,您需要将相应的ng-app
和ng-controller
添加到包含您要验证的控件的某个页面元素。我把以下内容放在div标签中:
<div ng-app="validationApp" ng-controller="mainController">