小编dug*_*tov的帖子

Chrome的垃圾收集工作方式有何不同?

当我尝试调试此代码时(http://jsfiddle.net/QWFGN/)

var foo = (function(numb) {
    return {
        bar: function() {
            debugger;
            return "something";
        }
    }
})(1);
foo.bar()
Run Code Online (Sandbox Code Playgroud)

Chrome中的开发人员工具与Firefox中的Firebug和IE中的开发人员工具的行为不同.问题是,变量numb 是不是在Chrome开发者工具可见debugger;线.但是,它在Firebug和IE中可见.如果我尝试输入numbChrome的控制台,我会得到:

ReferenceError: numb is not defined
Run Code Online (Sandbox Code Playgroud)

numb当然,在这个闭包中可以看到,如果我将代码更改为(http://jsfiddle.net/QWFGN/1/)

var foo = (function(numb) {
    return {
        bar: function() {
            debugger;
            console.log(numb);
            return "something";
        }
    }
})(1);
foo.bar()
Run Code Online (Sandbox Code Playgroud)

numb现在也可以在Chrome中看到,我可以获得价值1作为回应.

所以,我的问题是:为什么只有谷歌浏览器看不到从未使用的闭包变量?Google Chrome是否拥有自己的垃圾收集实现,或者仅与Google Chrome中的调试工具实施相关.

javascript garbage-collection google-chrome v8

9
推荐指数
1
解决办法
242
查看次数

指令(嵌套在部分内部)抛出"Termplate必须只有一个根元素"

我正在尝试遵循角度最佳实践建议并使用指令来封装可重用的HTML元素.错误消息:

错误:模板必须只有一个根元素.是:partials/user/path/to/somedata.html

指令代码:

.directive('stDirectivename', function() {
    return {
        restrict: 'E',
        replace: true,
        // transclude: false,
        template: 'partials/user/path/to/somedata.html'
    };
})
Run Code Online (Sandbox Code Playgroud)

和模板:

<div ng-show="person.condition" class="someclass">
    <span class = "personRoi">
        <i class="anotherclass " ng-class="{'specialclass1': person.count>=0,'specialclass2':person.count<0}">

        </i>{{person.somedata}}%
    </span>
</div>
Run Code Online (Sandbox Code Playgroud)

在部分(模态的模板)中调用为:
<st-directivename></st-directivename>

当我在指令中替换模板url以获得简单的html字符串时.一切正常.不幸的是我不能这样做,对于涉及两个真正的模板'.此解决方案不会扩展到我计划的某些指令的更大模板.

此外,当我只是插入模板html而不是指令标签时,一切正常(我实际上是从现有的html中提取代码以使其可重用).

我在其他SO问题中读到这与在模板中有额外的空格/标签/注释有关.但我只是找不到这样的元素.

有人知道解决方案吗?我会很高兴得到任何帮助.

angularjs angularjs-directive

7
推荐指数
2
解决办法
6145
查看次数

如何在jsrender中设置评论

当我使用jsrender模板引擎时,我想在代码中添加一些注释,但我找不到注释标记.

我知道我可以使用html注释,但我不希望这些注释在html上呈现,因此不可用<!-- -->.

所以,我想要的是:

<script id="row-template" type="text/x-jsrender">
{{// some comment that will not be rendered}}
{{if #data[0]}}
  <tr>
    {{for #data tmpl="#some-template"/}}
  </tr>
{{/if}}
</script>
Run Code Online (Sandbox Code Playgroud)

jsrender

6
推荐指数
1
解决办法
1431
查看次数

在AJAX POST上绑定play框架中的复杂元素列表

我有一个Foo带有两个属性和formbinder 的简单类:

import play.data.Form;

public class Foo {
    public static Form<Foo> form = Form.form(Foo.class);

    public String name;
    public List<Bar> bars = new ArrayList<Bar>();
}
Run Code Online (Sandbox Code Playgroud)

哪个Bar班级是:

public class Bar {
    public String prop1;
    public String prop2;
}
Run Code Online (Sandbox Code Playgroud)

当我尝试发出POST ajax请求时:

jsRoutes.controllers.Test.duh().ajax({
  data: {
    name: "Test",
    bars: [{prop1: "first"}]
  }
});
Run Code Online (Sandbox Code Playgroud)

在duh方法中,在线:

Form<Foo> request = Foo.form.bindFromRequest();
Run Code Online (Sandbox Code Playgroud)

我收到错误:

[InvalidPropertyException:bean类[models.Foo]的无效属性'bars [0] [prop1]':索引属性路径'bars [0] [prop1]'中引用的属性既不是数组也不是List也不是Map; 返回值是[第一]]

AJAX请求的表单数据如下所示:

name:Test
bars[0][prop1]:first
Run Code Online (Sandbox Code Playgroud)

问题:在play框架中绑定复杂元素列表的正确方法是什么?此代码还需要什么工作?

java playframework

6
推荐指数
1
解决办法
1731
查看次数

为什么JSlint会返回"意外".'." 错误

当我通过jslint运行此代码时

(function () { return "helloooo"; }).call();
Run Code Online (Sandbox Code Playgroud)

它给了我以下错误:

出乎意料的'.'.

这是为什么?

当我将函数赋值给变量,然后调用它时我没有错误.

这个:

var cb = function () { return "helloooo"; };
cb.call();
Run Code Online (Sandbox Code Playgroud)

不返回任何错误.

但是,我想知道为什么我首先得到错误.道格拉斯·克罗克福德的神圣规则我打破了第一个例子吗?

javascript jslint

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

使用javascript中的xPath使用默认命名空间解析XML

我需要创建一个XML xPath解析器.所有解析都必须在客户端进行(使用javascript).我创建了一个执行此操作的javascript,在默认命名空间发挥作用之前,所有内容都可以正常运行.我根本无法查询具有默认命名空间的XML.

我在小提琴上创建了一个示例代码.在xmlString中是从服务器接收的XML字符串.在xPathString中,对收到的XML进行查询.

以下是一些场景:

  1. http://jsfiddle.net/BF34q/1/ - 没有命名空间 - 一切正常
  2. http://jsfiddle.net/BF34q/2/ - 添加了ns命名空间.element有ns:前缀.xPath使用此前缀 - 确定
  3. http://jsfiddle.net/BF34q/3/ - 使用默认命名空间 - 不确定如何配置xPathString.

请注意,其他人将使用此解析器,所以我真的想避免像这样的解决方案

var xPathString = "//*[local-name()='book']";
Run Code Online (Sandbox Code Playgroud)

并使他们能够使用简单的xPath表达式解析它.我想知道是否可以在javascript中指定默认名称空间前缀?

注意:小提琴上提供的示例在IE中不起作用.

javascript xml xpath namespaces

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