【发布时间】:2016-06-07 23:52:21
【问题描述】:
我正在使用gulp-angular-templatecache 将我所有的filename.view.html 文件转换为templates.js 文件。
然后我使用$stateProvider 创建我的状态并使用$templateCache 提取模板,并带有抽象的“根”状态。
$stateProvider
.state('app', {
abstract: true,
template: '<div ui-view></div>'
})
.state('app.login', {
url: '/login',
template: $templateCache.get('components/login/login.html'),
controller: 'LoginController as login'
});
到目前为止,一切正常。模板按应有的方式加载到我的页面中,但无论我做什么,我都无法让控制器工作。
我的模块和相关的控制器比较简单:
(function () {
'use strict';
angular
.module('login', [])
.controller('LoginController', LoginController);
function LoginController () {
var vm = this;
vm.loginID = 'test';
vm.password = 'test';
vm.doLoginRequest = function () {
console.log('Performing login request...');
}
}
})();
我已经尝试了几种不同的方法,但似乎都没有奏效:
- 将模板移至模块的
.run(...)部分,并将其推入$templateCache中 - 状态配置中
template、templateUrl和templateProvider的不同变体 - 从状态中删除 controllerAs 语法并改用
ng-controller - 使用旧式控制器语法(即不是 controllerAs 语法)
有人对我如何解决此问题有任何建议吗?我已经把头发扯了好几个小时了!
【问题讨论】:
-
如何包含控制器的
login模块。你也不需要打电话给$templateCache.get()。你可以做templateUrl: 'components/login/login.html'。 -
你的路由是否定义为登录模块下的配置?你的路由定义了哪个模块?
-
login模块只是作为我的主应用程序模块的依赖项包含在内。我的所有路由都在.config(...)块中一起定义,作为主应用程序模块的一部分,例如angular.module('app', ['login']).config(function ($stateProvider) { .... }); -
为了篇幅,我没有在这里展示依赖注入,但我向你保证我也正确地使用了依赖注入:)
-
@rob 感谢您确认我可以使用 templateUrl。我现在已经更新了这些,但我的问题仍然存在:(
标签: javascript angularjs angular-ui-router angular-templatecache