Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Angular 1.5组件/需要$log的依赖项注入_Javascript_Angularjs_Webpack_Components - Fatal编程技术网

Javascript Angular 1.5组件/需要$log的依赖项注入

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

我一直在尝试将$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', ['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
文件显示
标题的代码。如果我们看不到代码,就很难帮助您使用该代码。