小编tgr*_*ser的帖子

在主干js中的视图中嵌套视图

我正在使用backbone.js构建一些复杂的视图关系,我想知道从javascript性能角度看是否存在任何问题:

var viewOne = Backbone.View.extend({
         tagName : 'li',
         initialize : function() {
              this.v2 = new viewTwo({parent:this});
         },
         clickHideOne : function() {
              $(this.el).removeClass('selected');
         }
});

var viewTwo = Backbone.View.extend({
         tagName : 'a',
         initialize : function() {
              this.bind('click', this.clickHide, this);
         },
         clickHide(){
              $(this.el).removeClass('selected');
              this.options.parent.clickHideOne();
         }
});
Run Code Online (Sandbox Code Playgroud)

这是两个视图之间循环引用的一个非常简单的示例,为了使一个视图中的事件容易在视图链中向上传播,或者保持对父视图中对象的任何引用.是否有任何情况会出现问题,特别是与IE7 +中DOM元素引用的潜在泄漏有关,或者是否有另一个推荐的最佳实践来引用父视图.

另外,我明白我可以做$(this.el).parent('li').removeClass('selected'); 在视图中,这不是重点......这只是我对循环引用的一个非常简单的例子.

javascript jquery dom circular-reference backbone.js

11
推荐指数
1
解决办法
6251
查看次数

HTML标记中语法突出显示属性的正则表达式

我正在为Sublime/TextMate语言文件中的一些语法高亮处理正则表达式,它要求我在非自我关闭的html标记上"开始",并在相应的结束标记上结束:

  • 开始: (<)([a-zA-Z0-9:.]+)[^/>]*(>)

  • 结束: (</)(\2)([^>]*>)

到目前为止,一切都很好,我能捕捉到标签名称,它匹配才能够应用适当的图案为标记之间的区域.

jsx-tag-area:
    begin: (<)([a-zA-Z0-9:.]+)[^/>]*>
    beginCaptures:
      '1': {name: punctuation.definition.tag.begin.jsx}
      '2': {name: entity.name.tag.jsx}
    end: (</)(\2)([^>]*>)
    endCaptures:
      '1': {name: punctuation.definition.tag.begin.jsx}
      '2': {name: entity.name.tag.jsx}
      '3': {name: punctuation.definition.tag.end.jsx}
    name: jsx.tag-area.jsx
    patterns:
    - {include: '#jsx'}
    - {include: '#jsx-evaluated-code'}
Run Code Online (Sandbox Code Playgroud)

现在我也希望能够在开始标记中捕获零个或多个html属性,以便能够突出显示它们.

所以,如果标签是 <div attr="Something" data-attr="test" data-foo>

这将能够匹配attr,data-attrdata-foo,还有<div

喜欢的东西(这很粗糙):

(<)([a-zA-Z0-9:.]+)(?:\s(?:([0-9a-zA-Z_-]*=?))\s?)*)[^/>]*(>)

它不需要是完美的,只是为了一些语法高亮,但我很难弄清楚如何在标签内实现多个捕获组,我是否应该使用环顾等,或者这是否是甚至可以使用单个表达式.

编辑:这里有关于具体案例/问题的更多细节 - https://github.com/reactjs/sublime-react/issues/18

regex syntax-highlighting sublimetext2 react-jsx

8
推荐指数
1
解决办法
1371
查看次数

具有唯一结果行的MYSQL JOIN

假设我有2个表,一个叫做类别,一个叫做cat_pages.

类别表具有列ID,标题和时间戳.例如:

CREATE TABLE categories (
    id INT UNSIGNED PRIMARY KEY,
    title VARCHAR(32),
    `timestamp` TIMESTAMP,
    INDEX (title)
) Engine=InnoDB;
Run Code Online (Sandbox Code Playgroud)

cat_pages有2列,cat_id和page_id:

CREATE TABLE cat_pages (
    cat_id INT UNSIGNED 
        REFERENCES categories (id) 
        ON DELETE CASCADE ON UPDATE CASCADE,
    page_id INT UNSIGNED
        REFERENCES pages (id) 
        ON DELETE CASCADE ON UPDATE CASCADE,
    UNIQUE INDEX (cat_id, page_id),
    INDEX (page_id, cat_id),
) Engine=InnoDB;
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用ID上的cat_pages表加入类别表,这样就可以了

  1. 仅检索category_pages表中具有id的类别
  2. 每个类别仅在结果集中显示一次

查询:

SELECT * FROM categories as c
    LEFT JOIN cat_pages as p ON c.id = p.cat_id
Run Code Online (Sandbox Code Playgroud)

生成一个重复多次类别的结果集(因为cat_pages表中有多个匹配项.我需要什么才能使每个类别只显示一次,如果cat_pages表中没有匹配则根本不显示?

mysql sql join

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