我正在使用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中创建它?
我正在尝试对一个集合进行排序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) 我需要创建一个迭代对象数组的新对象,最初看起来像这样:
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) 使用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) 我期待跟踪的最佳方式Site Activity在Google Analytics用于与由Web应用程序Backbone和Requires.
看看谷歌的页面,我找到了这个插入式插件--Backbone.Analytics.
我的问题是:
1)使用Backbone.Analytics,我应该更改backbone.analytics.js以便添加_gaq.push(['_setAccount', 'UA-XXXXX-X']);?
2)是否有其他可能的解决方案/插件?
此问题的目标是:通过使用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
我想知道您对如何使用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) 我正在使用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) 我遇到以下情况:
我必须检查传递给函数的object参数是否有效:
〔实施例:
function (opt) {
if (opt && opt.key && opt.key2) {
// make something
}
}
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来进行这种检查?
我有以下对象
{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 ×5
backbone.js ×4
jasmine ×2
jquery ×2
marionette ×2
jquery-ui ×1
modal-dialog ×1
requirejs ×1