小编Kir*_*tin的帖子

React Js有条件地应用类属性

我想有条件地显示和隐藏此按钮组,具体取决于从父组件传入的内容,如下所示:

<TopicNav showBulkActions={this.__hasMultipleSelected} />
Run Code Online (Sandbox Code Playgroud)

....

__hasMultipleSelected: function() {
  return false; //return true or false depending on data
}
Run Code Online (Sandbox Code Playgroud)

....

var TopicNav = React.createClass({
render: function() {
return (
    <div className="row">
        <div className="col-lg-6">
            <div className="btn-group pull-right {this.props.showBulkActions ? 'show' : 'hidden'}">
                <button type="button" className="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
                  Bulk Actions <span className="caret"></span>
                </button>
                <ul className="dropdown-menu" role="menu">
                  <li><a href="#">Merge into New Session</a></li>
                  <li><a href="#">Add to Existing Session</a></li>
                  <li className="divider"></li>
                  <li><a href="#">Delete</a></li>
                </ul>
            </div>
        </div>
    </div>
    );
  }
});
Run Code Online (Sandbox Code Playgroud)

然而,{this.props.showBulkActions?没有发生任何事情?'show':'hidden'}.我在这里做错了吗?

javascript css class-attributes reactjs twitter-bootstrap-3

287
推荐指数
14
解决办法
23万
查看次数

是否有多传输记录器在向控制台报告时保留原始文件中的调用位置?

前言

一个已知的库Winston与许多其他不同的库有相同的问题,这些库用于多传输日志记录.当其中一个传输是console调试器控制台(浏览器或Node.js的任何环境)中报告的消息时,错过了非常强大的信息:启动初始调用的位置(开发人员的文件),而不是显示库内的调用位置.在这种情况下,来自不同文件/地点的多个呼叫都被报告为从同一个地方记录.

解决了尝试

我研究了两种方法.当他们推断出呼叫的地点时,一个是浏览器/节点上的技巧console.log.我发现它的唯一方法是通过源地图.这是一种技术,允许将缩小的js源映射到原始源并在查看完整源时进行调试.但是,这假设存在从真实(缩小)源到原始源的一个转换.如果在源console.log库中替换源代码,则mylogger应该是动态的并且反映mylogger.log被调用的多个位置.我没有找到一种方法来动态执行此操作,因为浏览器只加载一次地图文件.

另一个是用console.log自定义函数调用和内部替换所有其他传输(这可以是相同的Winston).但是,如果我们做如下的简单替换

var originalLog = console.log;
console.__proto__.log = function(message){
    message = [new Date().toISOString(), message].join(' ');
    originalLog.call(console, message);
//here send via other transports
    body.innerHTML = body.innerHTML + message + '<br/>';
};
Run Code Online (Sandbox Code Playgroud)

呼叫的位置originalLog将始终相同,并将在控制台输出中相应地报告.所以我想到拦截调用console.log但保留原始本机函数.但我没有得到呼叫的参数.

function interceptGettingLog(){
    var originalLog = console.log;
    Object.defineProperties(console.__proto__, {
        log: {
            get: function(){
//arguments is always empty here, which is not a big surprise
                originalLog.call(console, …
Run Code Online (Sandbox Code Playgroud)

javascript logging

12
推荐指数
1
解决办法
180
查看次数

为什么在单元测试中的$ compile(element)(范围)之后调用scope.$ digest()

以下是用于测试指令的非常常见的通用方案:

var element,scope;

beforeEach(inject(function ($rootScope,$compile) {
  scope = $rootScope.$new()
  element = angular.element('<div my-directive></div>')
  $compile(element)(scope)
  scope.$digest(); //why?
}))
Run Code Online (Sandbox Code Playgroud)

我理解$compile(element)返回一个函数,该函数接受一个scope参数并将其提供给元素的指令.我也明白scope.$digest()执行摘要循环并开始脏检查.尽管如此,我的问题是为什么你必须打电话给scope.$digest后呼叫$compile才能使这一切都能正常工作?

jasmine angularjs

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

在 sinon 中存根函数以在每次调用时返回不同的值

我有一个功能,如下所示:

function test(parms) {
        var self = this;
        return this.test2(parms)
        .then(function (data) {
            if (data) {
                return ;
            }
            else {
                return Bluebird.delay(1000)
                .then(self.test.bind(self, parms));
            }
        }.bind(self));
    };
Run Code Online (Sandbox Code Playgroud)

我正在尝试为此函数编写单元测试。我sinon.stub用来模拟函数的功能test2

我写了一个测试用例,其中test2返回true,因此test函数成功完成执行。但是我想要一个测试用例,在第一个实例test2返回时false,它等待延迟并且下次test2返回true。为此,我写了我的测试用例如下:

var clock;
var result;
var test2stub;
var count = 0;

before(function () {
    clock = sinon.useFakeTimers();
    //object is defined before
    test2stub = sinon.stub(object,"test2", function () {
        console.log("Count is: " + count);
        if …
Run Code Online (Sandbox Code Playgroud)

javascript unit-testing node.js sinon

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

我们可以使用 javascript 将 ANSI 编码的 CSV 文件转换为 utf-8 编码的文件吗?

几天来我一直在寻找这个问题的答案。实际上,我需要将 ansi 编码的 csv 文件上传到 Web 服务。前端应用程序读取文件,将其内容编码为 base64,然后以 json 格式将其发送到 Web 服务。但是,当我尝试使用 javascript 读取文件时,非英语 unicodes 只会更改为其他内容。

有没有办法在javascript中读取ansi编码的csv文件并将其编码转换为utf-8?

以我的研究,我认为是不可能的。该文件本身必须是 UTF-8。

任何建议都会有很大帮助。

javascript encoding character-encoding

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

如何强制文本数组中的空格?

所以我正在编写一个随机短语生成器.但是,在我的每一部分之后,我都无法得到一个空白......

当我在数组中写一个空格时它不起作用,当我&nbsp;在我的div之间打印短语部分时它也不起作用...

你能帮助我吗 ?我一直在研究这个小提琴:

http://jsfiddle.net/leokaj/wyndk9dk/14/

var adjective = [
  'an amazing ',
  'a luxurious ',
  'a crazy ',
  'an imaginary ',
  'a fun ',
  ],
  //the current adjectives length
  maxAdjective = adjective.length;
Run Code Online (Sandbox Code Playgroud)

提前致谢 !

html javascript arrays jquery

3
推荐指数
1
解决办法
90
查看次数