Javascript 使用collection.reset不会';t启动集合';s解析方法

Javascript 使用collection.reset不会';t启动集合';s解析方法,javascript,json,backbone.js,Javascript,Json,Backbone.js,我使用主干集合的重置方法在页面加载时将一堆JSON数据直接引导到集合中 文档提供了一些可能是这种情况的线索,但当我这样做时,集合或模型的解析方法都不会被激发。这真的很烦人 以下是一些示例代码: var ablefutures = {}; ablefutures.category = Backbone.Model.extend({ idAttribute : 'categoryId', parse : function(response) { debug

我使用主干集合的重置方法在页面加载时将一堆JSON数据直接引导到集合中

文档提供了一些可能是这种情况的线索,但当我这样做时,集合或模型的解析方法都不会被激发。这真的很烦人

以下是一些示例代码:

var ablefutures = {};

ablefutures.category = Backbone.Model.extend({
    idAttribute : 'categoryId',

    parse : function(response)
    {
        debugger;
        response.categoryDetailItems = new ablefutures.categoryDetailItems(response.categoryDetailItems);

        return response;
    }
});


ablefutures.categories = Backbone.Collection.extend({

    model: ablefutures.category,
    url: '../api/categoriesRouter.php',
    parse : function(response)
    {
        debugger;

        return response
    }
});

categories = new ablefutures.categories();

categories.reset([{"categoryId":1,"name":"Eyewear","heroText":"<div>The complete <span class=\"stand-out\">eyewear<\/span> solution<\/div><div class=\"subText\">Eye protection for clinicians and patients.<\/div>","categoryDetailItems":[{"categoryDetailId":1,"description":"gdfsgdfgdfgdfgdf"}],"created":null,"lastUpdated":null,"status":1}]);

category = categories.get(1);

$('#category').html(category.get('categoryId'));
var-ablefutures={};
ablefutures.category=Backbone.Model.extend({
idAttribute:'categoryId',
解析:函数(响应)
{
调试器;
response.categoryDetailItems=新的ablefutures.categoryDetailItems(response.categoryDetailItems);
返回响应;
}
});
ablefutures.categories=Backbone.Collection.extend({
型号:ablefutures.category,
url:“../api/categoriesRouter.php”,
解析:函数(响应)
{
调试器;
返回响应
}
});
categories=新的ablefutures.categories();
类别。重置([{“categoryId”:1,“名称”:“眼镜”,“heroText”:“为临床医生和患者提供的完整眼镜保护解决方案”,“categoryDetailItems”:[{“categoryDetailId”:1,“描述”:“gdfsgdfgdfgdfgdf”}),“已创建”:null,“上次更新”:null,“状态”:1});
category=categories.get(1);
$('#category').html(category.get('categoryId'));
请看下面的小提琴:

我希望这两个“debugger”语句都能在这里找到,但正如您所看到的,它们都不是。 文档中说“parse”只在集合的fetch方法上触发,但这将涉及第二个ajax调用,我根本不需要这个调用

有人能推荐一种我可以用来让集合的reset方法触发解析方法的技术吗

谢谢,

收集#重置
需要第二个
选项
参数。文档中没有提到它,但是您可以通过
选项中的
parse:true
来获取
重置
以调用
parse

categories.reset([...], { parse: true });
最小演示:
更新您的小提琴版本:

reset
结束时会调用它来完成大部分繁重的工作,当调用
set
时,它会传递
选项
set
也不会记录
parse:true
行为,但您:

老实说,基于API的其他部分,我猜测选项中的
parse:true
可能会起作用,并尝试了它,然后我通过跟踪文档和源代码找到了理由。

集合#重置
需要第二个
选项
参数。文档中没有提到它,但是您可以通过
选项中的
parse:true
来获取
重置
以调用
parse

categories.reset([...], { parse: true });
最小演示:
更新您的小提琴版本:

reset
结束时会调用它来完成大部分繁重的工作,当调用
set
时,它会传递
选项
set
也不会记录
parse:true
行为,但您:


老实说,基于API的其他部分,我猜测选项中的
parse:true
可能会起作用,并尝试了它,然后我通过跟踪文档和源代码找到了理由。

我确信可以用这些选项做些什么,但我不知道会是什么。我应该咬紧牙关,检查一下源头。谢谢你,这几乎是完美的答案。如果可以的话,我会投两次票。谢谢。我确信这些选项可以做些什么,但我不知道会是什么。我应该咬紧牙关,检查一下源头。谢谢你,这几乎是完美的答案。如果可以的话,我会投两次票。非常感谢。