我是Angular的新手,我很难过John Papa's guidelines。他的片段告诉我把我的控制器逻辑放在我的指令中,但这对我没有意义。我尝试过自己做,而且我似乎也不能这样做,但我认为这不是最优的,因为我不能让我的控制器整理在他自己的文件中,而且我必须让我的.directive.js
变得更大更笨重。我还没有找到一个有人没有使用控制器 - 逻辑 - 指令的例子。Angular为什么找不到外部文件上的指令控制器?
这里就是我试图做... 这是我funcionario一览all.directive.js:
(function() {
'use strict';
angular.module('i9t.funcionario').directive('i9tFuncionariosListAll',
funcionariosListAll);
//directive.$inject = [];
/* @ngInject */
function funcionariosListAll() {
// Usage:
//
// Creates:
//
var directive = {
bindToController : true,
templateUrl : 'funcionario-listall.html',
controller : FuncionarioController,
controllerAs : 'funcCtrl',
restrict : 'AE'
};
return directive;
}
// angular.module('i9t.funcionario').controller('FuncionarioController',
// FuncionarioController);
// FuncionarioController.$inject = [ '$scope', '$http' ];
//
// /* @ngInject */
// function FuncionarioController($scope, $http) {
// // Why do i need to do this...
// var vm = this;
// vm.funcionarios = [];
// // To make this expression execute when the page loads?
// $http.get("./funcionario/listarFuncionarios").then(function(data) {
// vm.funcionarios = data.data;
// });
// vm.updateFuncionario = updateFuncionario;
// // //////////////
//
// function updateFuncionario(funcId) {
// vm.funcionarios = [ {
// id : 1,
// nome : 'papillon',
// endereco : 'Saint-Martin-de-Ré'
// }, {
// id : 2,
// nome : 'montressor',
// endereco : 'La Rochelle'
// } ];
// }
// }
})();
它无法找到我的控制器,被定义为funcionario.controller.js
和有评论的代码。如果我不能将控制器逻辑放在指令上,它将不起作用,但我希望将它们全部分开,当它变得更大时,然后我不需要改变指令(太多了,至少)。他们位于同一个文件夹中,并且我在同一个文件夹上的funcionario.module.js
上声明i9t.funcionario
模块。我是否应该在指令中注入控制器以使其工作?为控制器制作一个单独的模块?我试过了,但没有奏效。 我使用的是Angular 1.4.4,刚刚从CodeSchool和Thinkster那里学到了,所以我可能会在没有意识到的情况下犯下一些愚蠢的错误!
真的非常感谢!我在考虑维护以前的结构,但是我没有注意到我可以使用实际的名称作为其他事情。我认为,既然他们在同一个模块上,他们可以很容易地被引用。但是,作为另一件事,说我想调用一个服务的方法。我需要通过常规方法注入它,对吧?或者有没有一种方法从该控制器使用该引用调用一些方法?再次感谢! –
@ Yuri-M-Dias这些名称仅用于** JS代码中的依赖注入。你可以通过依赖注入的标准方式或者使用'$ injector'服务来获得它们引用的对象,但是你必须自己调用Plain Javascript Objects上的方法。你不能'跳过'依赖注入并调用''FuncionarioService.get()''。 –