小编NVI*_*NVI的帖子

React.js:将一个组件包装到另一个组件中

许多模板语言都有"slots"或"yield"语句,允许进行某种控制反转,将一个模板包装在另一个模板中.

Angular有"transclude"选项.

Rails有收益率声明.如果React.js有yield语句,它将如下所示:

var Wrapper = React.createClass({
  render: function() {
    return (
      <div className="wrapper">
        before
          <yield/>
        after
      </div>
    );
  }
});

var Main = React.createClass({
  render: function() {
    return (
      <Wrapper><h1>content</h1></Wrapper>
    );
  }
});
Run Code Online (Sandbox Code Playgroud)

期望的输出:

<div class="wrapper">
  before
    <h1>content</h1>
  after
</div>
Run Code Online (Sandbox Code Playgroud)

唉,React.js没有<yield/>.如何定义Wrapper组件以实现相同的输出?

javascript template-engine composition transclusion reactjs

169
推荐指数
3
解决办法
14万
查看次数

React.js:contentEditable的onChange事件

如何收听contentEditable基于更改事件的控件?

var Number = React.createClass({
    render: function() {
        return <div>
            <span contentEditable={true} onChange={this.onChange}>
                {this.state.value}
            </span>
            =
            {this.state.value}
        </div>;
    },
    onChange: function(v) {
        // Doesn't fire :(
        console.log('changed', v);
    },
    getInitialState: function() {
        return {value: '123'}
    }    
});

React.renderComponent(<Number />, document.body);
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/NV/kb3gN/1621/

javascript dom contenteditable reactjs

95
推荐指数
6
解决办法
8万
查看次数

使用Chrome DevTools调试iOS 6 + 7 Mobile Safari

iOS 6内置支持远程调试(1分钟截屏视频).它适用于新的Safari Web Inspector,它似乎是一个1年前的WebKit Inspector分支.它错过了一些功能,如JS编辑和WebSocket框架检查.

Safari的Web检查器确实使用WebKit远程调试协议.但是,Safari不使用TCP/HTTP作为传输层,因此使其与Chrome不兼容.

苹果公司的Timothy Hatcher(又名Xenon)表示

  • Safari用于传输层的是什么?
  • 我可以从这个神秘的传输层创建代理到HTTP,以使其与Chrome DevTools一起使用吗?

safari mobile-safari web-inspector ios google-chrome-devtools

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

如何使用Bash将一个目录合并到另一个目录中?

我正在寻找将文件从一个目录合并到另一个目录的shell脚本.

样品:

html/
  a/
    b.html
  index.html

html_new/
  a/
    b2.html
    b.html
Run Code Online (Sandbox Code Playgroud)

用法:

./mergedirs.sh html html_new
Run Code Online (Sandbox Code Playgroud)

结果:

html/
  a/
    b.html
    b2.html
  index.html
Run Code Online (Sandbox Code Playgroud)

html/a/b.htmlhtml_new/a/b.html
html/a/b2.html复制的被取而代之的是html_new/a/b2.html
html/index.html被保持不变的

bash shell scripting command-line sh

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

如果有循环引用,如何将DOM节点序列化为JSON?

我想将DOM节点甚至整个序列化为windowJSON.

例如:

 >> serialize(document)
    -> {
      "URL": "http://stackoverflow.com/posts/2303713",
      "body": {
        "aLink": "",
        "attributes": [
          "getNamedItem": "function getNamedItem() { [native code] }",
          ...
        ],
        ...
        "ownerDocument": "#" // recursive link here
      },
      ...
    }
Run Code Online (Sandbox Code Playgroud)

JSON.stringify()

JSON.stringify(window) // TypeError: Converting circular structure to JSON
Run Code Online (Sandbox Code Playgroud)

问题是JSON默认不支持循环引用.

var obj = {}
obj.me = obj
JSON.stringify(obj) // TypeError: Converting circular structure to JSON
Run Code Online (Sandbox Code Playgroud)

window和DOM节点有很多.window === window.window将如此document.body.ownerDocument === document.

此外,JSON.stringify不序列化函数,所以这不是我想要的.

dojox.json.ref

 `dojox.json.ref.toJson()` can easily serialize object with …
Run Code Online (Sandbox Code Playgroud)

javascript serialization json dom circular-reference

48
推荐指数
3
解决办法
6万
查看次数

Rubygems:如何添加特定于平台的依赖项?

我有一个ruby gem,它对每个操作系统都有不同的依赖关系.我必须明确地写下所有这些:

在Mac OS X上:

gem install livereload
Run Code Online (Sandbox Code Playgroud)

在Linux上:

gem install rb-inotify livereload
Run Code Online (Sandbox Code Playgroud)

在Windows上:

gem install eventmachine-win32 win32-changenotify win32-event livereload
Run Code Online (Sandbox Code Playgroud)

我可以稍微调整一下gemspec,这样gem install livereload每个操作系统的安装说明都很简单吗?

ruby rubygems

32
推荐指数
1
解决办法
6499
查看次数

React.js:非CSS动画

React文档没有关于处理非CSS转换的动画的任何内容,例如滚动位置和SVG属性的动画.

至于CSS过渡,有一个附加组件.

这是一个简单的SVG示例示例:

动画SVG圈

/**
 * @jsx React.DOM
 */


function animate(duration, onStep) {
    var start = Date.now();
    var timer = {id: 0};
    (function loop() {
        timer.id = requestAnimationFrame(function() {
            var diff = Date.now() - start;
            var fraction = diff / duration;
            onStep(fraction);
            if (diff < duration) {
                loop();
            }
        });
    })();
    return timer;
}

function lerp(low, high, fraction) {
    return low + (high - low) * fraction;
}


var App = React.createClass({
    getInitialState: function() {
        return …
Run Code Online (Sandbox Code Playgroud)

javascript css animation svg reactjs

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

React.js双向绑定:valueLink中的两级深度路径

我的状态是:

[
  {type: "translateX", x: 10},
  {type: "scaleX", x: 1.2}
]
Run Code Online (Sandbox Code Playgroud)

我正在使用双向绑定助手,我无法提供有效的密钥字符串linkState:

this.state.map(function(item, i) {
  return <div><input valueLink={this.linkState( ??? )}></div>
}
Run Code Online (Sandbox Code Playgroud)

如果this.linkState接受一些查询语法会很好,例如从我的示例中"0.type"检索 "translateX".

有没有解决方法?


我编写了DeepLinkState mixin,它是React.addons.LinkedStateMixin的直接替代品.用法示例:

this.state.map(function(item, i) {
  return <div><input valueLink={this.linkState([i, "x"])}></div>
}
Run Code Online (Sandbox Code Playgroud)

linkState("0.x") 也是可以接受的语法.

javascript data-binding reactjs

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

在IE中模拟W3C事件捕获模型

是否可以在Internet Explorer中模拟事件捕获

一个例子:

<a>one</a>
<a>two</a>
<a>three3</a>

<script>
var links = document.getElementsByTagName("A");
for (var i=0; i < links.length; i++) {
  links[i].onclick = function(){
    alert("clicked");
  };
}
</script>

我想阻止所有这些点击事件被触发.我可以用一个事件观察者做到这一点:

document.addEventListener("click", function(e) {
    e.stopPropagation();
    e.preventDefault();
}, true);

我怎么能在IE中做同样的事情?IE <9不支持addEventListener.它确实支持attachEvent,但它没有useCapture选项.

我找到了setCapture方法,但它看起来与W3捕获模型无关.

events internet-explorer dom event-handling javascript-events

15
推荐指数
1
解决办法
3827
查看次数

解析HTML并保留原始内容

我有很多HTML文件.我想替换一些元素,保持所有其他内容不变.例如,我想执行这个jQuery表达式(或者它的一些等价物):

$('.header .title').text('my new content')
Run Code Online (Sandbox Code Playgroud)

在以下HTML文档中:

<div class=header><span class=title>Foo</span></div>
<p>1<p>2
<table><tr><td>1</td></tr></table>
Run Code Online (Sandbox Code Playgroud)

并得到以下结果:

<div class=header><span class=title>my new content</span></div>
<p>1<p>2
<table><tr><td>1</td></tr></table>
Run Code Online (Sandbox Code Playgroud)

问题是,我尝试过的所有解析器(Nokogiri,BeautifulSoup,html5lib)都将它序列化为类似这样的东西:

<html>
  <head></head>
  <body>
    <div class=header><span class=title>my new content</span></div>
    <p>1</p><p>2</p>
    <table><tbody><tr><td>1</td></tr></tbody></table>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

他们补充说:

  1. HTML,头部和身体元素
  2. 关闭p标签
  3. TBODY

是否有满足我需求的解析器​​?它应该在Node.js,Ruby或Python中工作.

html ruby python html-parsing node.js

14
推荐指数
3
解决办法
1561
查看次数