我想有条件地显示和隐藏此按钮组,具体取决于从父组件传入的内容,如下所示:
<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'}.我在这里做错了吗?
一个已知的库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) 以下是用于测试指令的非常常见的通用方案:
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才能使这一切都能正常工作?
我有一个功能,如下所示:
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) 几天来我一直在寻找这个问题的答案。实际上,我需要将 ansi 编码的 csv 文件上传到 Web 服务。前端应用程序读取文件,将其内容编码为 base64,然后以 json 格式将其发送到 Web 服务。但是,当我尝试使用 javascript 读取文件时,非英语 unicodes 只会更改为其他内容。
有没有办法在javascript中读取ansi编码的csv文件并将其编码转换为utf-8?
以我的研究,我认为是不可能的。该文件本身必须是 UTF-8。
任何建议都会有很大帮助。
所以我正在编写一个随机短语生成器.但是,在我的每一部分之后,我都无法得到一个空白......
当我在数组中写一个空格时它不起作用,当我 在我的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)
提前致谢 !