我有角度路线工作,但我被困在特定的一块我不确定是否可能。我想使用外部控制器文件。
工作代码示例:
app.config(function($locationProvider, $routeProvider) {
$locationProvider.html5Mode(true);
$routeProvider
.when('/', {
templateUrl: '/AngularViews/Home/index.html'
}).when('/Login', {
templateUrl: 'AngularViews/Account/index.html',
controller: 'registerUser'
}).otherwise({ redirectTo: '/'});
});
app.controller('registerUser', function($scope) {
$scope.hello = 'test';
})
我想做的事情更像是这样:
app.config(function($locationProvider, $routeProvider) {
$locationProvider.html5Mode(true);
$routeProvider
.when('/', {
templateUrl: '/AngularViews/Home/index.html'
}).when('/Login', {
templateUrl: 'AngularViews/Account/index.html',
}).otherwise({ redirectTo: '/'});
});
模板登录的HTML:
<script src="../../AngularScripts/Account/account.js"></script>
REGISTRATION
<div ng-controller="registerUser">
{{hello}}
</div>
Account.js文件:
app.controller('registerUser', function($scope, data) {
$scope.hello = 'hello';
$scope.registerUser = function () {
var createData = {
"UserName": $scope.email,
"Password": $scope.password,
"ConfirmPassword": $scope.confirmpass
};
console.log(createData);
return createData;
};
})
当这样做时,第二种方式一直告诉我registerUser是未定义的,因为它无法找到registerUser
答案 0 :(得分:2)
您的registerUser
控制器必须与定义路由的应用程序在同一个应用程序中定义。如果它在另一个模块中,则需要在主应用程序中将模块作为依赖项注入,并且必须在应用程序定义的同时引入registerUser
控制器的脚本。请参阅plunk。
答案 1 :(得分:0)
app.controller('registerUser', function($scope, data) {
当调用它时,几乎没有任何反应。 angular.module.controller
告诉angular你想要注册一个控制器,但真正的注册发生在应用程序被引导的时候。因此,在正在运行的应用程序期间的任何调用都是徒劳的。
通过$controllerProvider.register(name, function)
注册控制器。遗憾的是,当应用程序已在运行时,您无法直接访问$controllerProvider
。我们需要作弊。将以下内容添加到配置块中:
app.config(function($locationProvider, $routeProvider, $controllerProvider) {
...
app.$controllerProvider = $controllerProvider;
在Account.js
文件中,您可以使用
app.$controllerProvider.register('registerUser', function($scope, data) {