小编js9*_*999的帖子

如何在jasmine.js中检查值是整数还是字符串?

我正在使用BackboneJS在Web应用程序中使用Jasmine编写单元测试.
有很多示例向您展示如何以这种方式检查值:

        it("should set the id property to default value", function()
        {
            expect(this.task.get("id")).toEqual(null);
        });
Run Code Online (Sandbox Code Playgroud)

但是我找不到任何使用Jasmine检查Javascript中的属性是否为数字或字符串的示例.

这样检查是否合适?
如果是的话,制作它的正确方法是什么?

示例:我想检查是否id是大于0的整数.如何在Jasmine中创建它?

jasmine

20
推荐指数
3
解决办法
2万
查看次数

在CompositeView中对集合进行排序的最佳方法

我正在尝试对一个集合进行排序Marionette.CompositeView.
我有一个看起来像这样的集合:

[
   {id: 1, name: 'bar'},
   {id: 2, name: 'boo' },
   {id: 3, name: 'foo' }
]
Run Code Online (Sandbox Code Playgroud)

我需要按相反顺序对id进行排序.
实际上它只在我重新加载页面时才有效.
当我添加一个新模型时,新项目显然是随机添加到列表中.
如果我刷新页面,它们将很好地排序.

我的问题是:
1)当我添加新模型时如何解决问题?
2)有可能改进代码吗?


这是我的代码:

return Marionette.CompositeView.extend({

    initialize: function () {
        this.collection.fetch();
    },

    onRender: function () {
        var collection =  this.collection;

        collection.comparator = function (collection) {
            return - collection.get('id');
        }
    },

    onSuccess: function () {
        this.collection.add(this.messageModel);
        this.collection.sort(); // the messageModel seems to be added 
                                // apparently randomly to the list. 
                                // only if I refresh the page …
Run Code Online (Sandbox Code Playgroud)

javascript backbone.js marionette

14
推荐指数
2
解决办法
8029
查看次数

从jQuery中的对象数组中提取单个属性的每个值

我需要创建一个迭代对象数组的新对象,最初看起来像这样:

startObj = [{'prop': true}, {'prop': false}];
Run Code Online (Sandbox Code Playgroud)

我希望结果如下:

endObj = {0: true, 1: false}
Run Code Online (Sandbox Code Playgroud)

我正在考虑使用,$.each但后来我不知道如何从这里开始.任何提示?

$.each([{'prop': true}, {'prop': false}], function (i, o) {
    var newObj;
    // the new object should look like this
    // newObj = {0: true, 1: false}
});
Run Code Online (Sandbox Code Playgroud)

javascript jquery

10
推荐指数
2
解决办法
5072
查看次数

要求使用垫片

使用requirejs2的填充程序,有一种方法可以告诉要求模块已经加载了吗?

例:

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="undescrore.js"></script>
<script type="text/javascript" src="require.js'"></script>
<script type="text/javascript">
    require.config({
        paths: {
            "backbone": '/vendor/js/backbone-min.js'
        },
        shim: {
            'backbone': {
                //These script dependencies should be loaded before loading
                //backbone.js
                deps: ['underscore', 'jquery'], // here I would like to load the already loaded library
            }
        }
    });
</script>
Run Code Online (Sandbox Code Playgroud)

requirejs backbone.js

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

使用Backbone跟踪网站活动(Google Analytics)

我期待跟踪的最佳方式Site ActivityGoogle Analytics用于与由Web应用程序BackboneRequires.

看看谷歌的页面,我找到了这个插入式插件--Backbone.Analytics.

我的问题是:
1)使用Backbone.Analytics,我应该更改backbone.analytics.js以便添加_gaq.push(['_setAccount', 'UA-XXXXX-X']);
2)是否有其他可能的解决方案/插件?

google-analytics backbone.js

9
推荐指数
2
解决办法
4973
查看次数

Jquery-autocomplete:如果没有选择任何项目,则使tab键选择第一个项目

此问题的目标是:通过使用jquery-autocomplete,如果未选择任何项目,则使Tab键能够选择第一个项目.

我已实现的代码(1)有效,但我有一些疑问,我想澄清它们,或者,如果有可能,改进/更改代码(1)以实现我的目标.

我的怀疑是:

我太早触发ENTER:事件调度是异步的(不同的侦听器是同步调用的,但它是触发器的异步),所以我可以在侦听器处理DONE之前触发它.
因此,我仍然在这里为这两个事件使用相同的对象,所以我可能有令人讨厌的副作用(如果我在第一次调度期间阻止默认,它将被阻止为第二个,因为它是例如相同的对象) .

有什么建议/评论吗?谢谢.

PS:
1)这是jsfiddle链接:http://jsfiddle.net/uymYJ/31/.
2)这个问题与这个问题有关如何在这种情况下避免修改事件对象.


(1)

$("#box").keydown(function(event){
    var newEvent = $.Event('keydown', {
        keyCode: event.keyCode
    });

    if (newEvent.keyCode !== $.ui.keyCode.TAB) {
        return;
    }

    newEvent.keyCode = $.ui.keyCode.DOWN;
    $(this).trigger(newEvent);

    newEvent.keyCode = $.ui.keyCode.ENTER;
    $(this).trigger(newEvent);
});
Run Code Online (Sandbox Code Playgroud)

javascript jquery jquery-ui javascript-events jquery-autocomplete

7
推荐指数
1
解决办法
4641
查看次数

如何使用MVC在javascript应用程序中组织spec文件

我想知道您对如何使用MVC(例如主干)在大型Web应用程序中组织文件/主导的意见.
我会做以下(*).请告诉我你的意见.


(*)

js
js/models/myModel.js
js/collections/myCollection.js
js/views/myView.js
spec/model/myModel.spec.js
spec/collections/myCollection.spec.js
spec/views/myView.spec.js
Run Code Online (Sandbox Code Playgroud)

backbone.js jasmine

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

将第一个字段聚焦在模态形式中

我正在使用Twitter中的Bootstrap来创建Marionette应用程序中的模态对话.

我想知道在不使用花哨的javascript的情况下,将第一个字段集中在模态窗体中的最佳方法是什么.

这是我的代码:

var app = new Marionette.Application();

app.addRegions({
    modal: '#modal'
});

app.vent.on('showModal', function (view) {
    var modal = app.modal;

    modal.show(view);
    modal.$el.modal({
        show: true,
        keyboard: true,
        backdrop: 'static'
    });
});
Run Code Online (Sandbox Code Playgroud)

modal-dialog twitter-bootstrap marionette

6
推荐指数
2
解决办法
5554
查看次数

我正在寻找一种智能方法来检查传递给函数的对象参数

我遇到以下情况:

我必须检查传递给函数的object参数是否有效:

〔实施例:

function (opt) {
     if (opt && opt.key && opt.key2) {
         // make something
     }
}
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来进行这种检查?

javascript

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

关于underscore.map

我有以下对象

{one : 1, two : 2, three : 3}
Run Code Online (Sandbox Code Playgroud)

而且我想

[1,2]
Run Code Online (Sandbox Code Playgroud)

在这里我的代码

_.map({one : 1, two : 2, three : 3}, function(num, key){ 
         if (key==='one' || key==='two') {
             return num;
         } 
}); // [1, 2, undefined]
Run Code Online (Sandbox Code Playgroud)

其实我想 [1,2]

我该如何改进我的代码?
谢谢

javascript underscore.js

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