小编Bob*_*nas的帖子

在AngularJS应用程序的控制器超类中加载依赖项的正确方法是什么?

我正在构建一个提供基本CRUD功能的AngularJS应用程序.该应用程序是使用TypeScript构建的,以利用类型和类.我有一个基本控制器,需要访问几个AngularJS依赖项.最初,我按如下方式注入了依赖项

文件:base-controller.ts

class BaseController {
    private $location;
    private $routeParams;
    constructor($location, $routeParams) {
        /* Manually inject dependencies */
        this.$location = $injector.get('$location');
        this.$routeParams = $injector.get('$routeParams ');
    }
}
Run Code Online (Sandbox Code Playgroud)

文件:list-controller.ts

class WorkRequestListController extends BaseController {
    /* Write code to override base controller or implement local methods */
}

angular.module('app.workRequests')
    .controller('WorkRequestListController', ['$location', '$routeParams',
        ($location, $routeParams) => new WorkRequestListController($location, $routeParams)
]);
Run Code Online (Sandbox Code Playgroud)

这个解决方案有效,但要求我的子类知道我的基类所需的依赖项.如果我在基类中需要另一个依赖项,我将不得不更改每个子类和实例化控制器的语句.为了解决这些问题,我现在只需将$ injector传递给我的基类,如下所示:

文件:base-controller.ts

class BaseController {
    private $location;
    private $routeParams;
    constructor($injector) {
        /* Load dependencies */
        this.$location = $injector.get('$location');
        this.$routeParams = $injector.get('$routeParams');
    }
} …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs typescript

5
推荐指数
1
解决办法
359
查看次数

Linux重新启动后,Kafka投掷"试图重新平衡时找不到经纪人"

我按照一个很好的分步教程在Linux上安装Kafka.在我重新启动Linux之前,一切都很好.重新启动后,当我尝试使用队列时,我收到以下错误kafka-console-consumer.sh.

$ ~/kafka/bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic TutorialTopic --from-beginning
Run Code Online (Sandbox Code Playgroud)

[2016-02-04 03:16:54,944]警告[console-consumer-6966_bob-kafka-storm-1454577414492-8728ae43],尝试重新平衡时没有找到经纪人.(kafka.consumer.ZookeeperConsumerConnector)

在我运行kafka-console-consumer.sh脚本之前,我确实使用kafka-console-producer.sh脚本将数据推送到Kafka队列.在重新启动Linux之前,这些步骤没有问题.

我可以通过手动启动Kafka来修复错误; 但是,我宁愿Kafka自动启动.

什么可能导致Kafka重启后无法正常启动?

linux apache-kafka apache-zookeeper

5
推荐指数
1
解决办法
1万
查看次数

调试Babel时,"this"的值不正确,与Chrome Devtools进行了反应

我有一个使用以下.babelrc配置使用Babel转换的React应用程序

{
  "presets": [
    "es2015",
    "stage-1",
    "react"
  ],
  "plugins": [
    "transform-decorators-legacy"
  ]
}
Run Code Online (Sandbox Code Playgroud)

应用程序转换并运行正常.但是,当我调试事件处理程序(故意写为箭头函数)时,Chrome调试器会将"this"的值显示为null.这是一个示例事件处理程序

handleNext = (event) => {
    event.preventDefault();
    this.gotoPage(this.state.page + 1);
}
Run Code Online (Sandbox Code Playgroud)

如果我在事件处理程序的第一行设置断点,则调试器将"this"的值显示为null,但将"_this"显示为"this"的正确值.正如我所说,代码运行干净,但调试令人沮丧,因为我不能简单地悬停在代码中的字段上以查看它们的值.如果我将"this"绑定到我的事件处理程序,我可以解决调试问题,但我不应该做那个额外的步骤.所有这一切在Babel5中运行良好,自从我们切换到Babel6以来只是一个问题.

我使用webpack捆绑代码并创建源图.以下是我的webpack.config.js中有关源映射配置的摘录

plugins: [
new webpack.SourceMapDevToolPlugin({
  filename: '[name].js.map',
  include: ['app.js'],
  columns: false
})
],
Run Code Online (Sandbox Code Playgroud)

google-chrome-devtools ecmascript-6 reactjs webpack babel-6

4
推荐指数
1
解决办法
498
查看次数