Javascript Angular 1.5组件/需要$log的依赖项注入
我一直在尝试将$log注入到由某个客户端的require语句创建的组件中Javascript Angular 1.5组件/需要$log的依赖项注入,javascript,angularjs,webpack,components,Javascript,Angularjs,Webpack,Components,我一直在尝试将$log注入到由某个客户端的require语句创建的组件中 var App = require('./app/containers/App'); var Header = require('./app/components/Header'); require('angular-ui-router'); var routesConfig = require('./routes'); import './index.css'; angular .module('app', ['u
var App = require('./app/containers/App');
var Header = require('./app/components/Header');
require('angular-ui-router');
var routesConfig = require('./routes');
import './index.css';
angular
.module('app', ['ui.router'])
.config(routesConfig)
.controller(App.App, ['$log'])
.service('todoService', todos.TodoService)
.component('app', App)
.component('headerComponent', Header);
标题的代码是
module.exports = {
template: require('./Header.html'),
controller: Header,
bindings: {
todos: '='
}
};
/** @ngInject */
function Header(todoService) {
this.todoService = todoService;
}
Header.prototype = {
handleSave: function (text) {
if (text.length !== 0) {
this.todos = this.todoService.addTodo(text, this.todos);
}
}
};
~应用程序的代码是
module.exports = {
template: require('./App.html'),
controller: App
};
function App($log) {
this.log = $log;
$log.error('Hello from App');
}
我可以为应用程序注入$log作为依赖项,因为我可以访问控制器。但尝试为Header执行相同的任务是困难的,因为Header是由require创建的,它似乎不允许访问控制器函数
我想知道的是,有没有办法解决这个问题?我正试图找到一种方法来记录header.js中任何可能的javascript函数的信息 除了使用$log在客户端应用程序中记录信息之外,我还见过其他方法 到目前为止,我的解决方案是在require块中编写代码
var ing = angular.injector(['ng']);
this.$log = ing.get('$log');
this.$log.error('I am a message');
我认为这是一种错误的做事方式,它给了我想要的,但我希望它会在某个时候破裂。我发现访问$log只对调试有用。这不是我需要的任何生产代码。我所要做的就是访问$log包装器。事实证明,我所要做的就是将$log添加到参数列表中
function Header(todoService,$log) {
$log.log('I am a log message');
this.todoService = todoService;
}
我是一个有点棱角的1.5新手,我假设你必须注入$log才能得到正确的响应。只需声明它似乎有点过时 使用
angular.injector
是一个常见的错误,因为它不能按预期工作,表明存在一些设计问题。问题不包含App
和Header
,但它们是相关的,您尝试做的事情应该在那里完成。看起来您使用.controller(App.App,['$log'])
的方式不对。试试这个:.controller('App',['$log',App.App])
在组件中,服务可以注入到组件控制器的构造函数中。有关详细信息,请参阅。此外,您可以为App.App
指定$inject
。这看起来像这样:App.App.$inject=['$log']代码>内部/app/containers/app
文件显示标题的代码。如果我们看不到代码,就很难帮助您使用该代码。