小编ltd*_*ltd的帖子

Backbone.Model.destroy在成功时不触发成功功能

所以,在我的一个观点中,我有这个功能:

delete_model: function() {
    var answer = confirm("Are you sure you want to delete this element?");
    if (answer) {
        this.model.destroy({
            success: function() {
                console.log("delete was a success");
            }
        });
    }
});
Run Code Online (Sandbox Code Playgroud)

当我ping它时,Ajax调用结束,后端正确删除模型并返回一个200标题,其中"OK"作为正文...但成功事件永远不会触发.我错过了什么吗?我该怎么办后端才能解雇这个事件?

backbone.js

17
推荐指数
1
解决办法
6653
查看次数

Backbone.js模型验证仅在set-> save(不在fetch上)

警告:我正在使用一个我无法完全控制的后端,因此我正在努力解决Backbone中的一些问题,这些问题可能会在其他地方更好地解决...不幸的是,我别无选择,只能在这里处理它们!

所以,我的问题是我真的想从表单中验证用户输入(当我在Backbone模型上设置值时),但是我从API上获得的模型在新创建的对象上(通过只接受名称的帖子) ,并且仅返回名称和对象ID)将无法通过验证检查.

例如,当在数据库中创建新对象时,会将两个关键字段填充为空字符串(因此当Backbone访问API并填充模型时,它会使用空字符串填充这些键).当用户将这些对象保存回来后编辑时,我想强制他们输入这两个键的值 - 这非常容易,因为Backbone的内置验证方法.

当然,问题是验证是在fetch-> set(不需要的行为)和set-> save(所需的行为)上触发 - 所以新创建的模型根本不会加载... Backbone收集它们,验证失败,错误触发.

所以,我的问题是:是否有一种"Backbone-y"方式只能验证set-> save上的模型,而不是fetch-> set?我可以使用特定的触发器来解决这个问题吗?

任何想法将不胜感激.

backbone.js

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

Backbone-relational.js + Backbone.View(s)

问题:文档很少,而且我是一个菜鸟 - 任何人都可以确认正确的(假设有一种)方法将Backbone.Views绑定到Backbone.RelationalModel的实例(来自backbone-relational.js)更新/渲染到dom?基于Backbone中正常的模型/视图绑定,我尝试了一些不同的方法,但收效甚微.

背景故事(/更多信息): 我正在学习Backbone.js的绳索,并且在过去的一周里不得不接受很多.如果我遗漏了一些明显的东西(极有可能 - 包括以下处理我问题的"正确"方式),请打电话给我.

我正在处理一个mongodb支持的REST接口(我没有完全控制 - 或者我将重新设计服务器端的行为),它充分利用了嵌套字典,所以我一直在阅读如何在Backbone中最好地表示(虽然没有打破Backbone提供的伟大的save()+服务器同步).

我见过两种选择:backbone-relationalligament.js.

我开始使用backbone-relational.js,并且为树中的各种字典创建了RelationalModel(骨干关系代替Backbone的标准模型),这些字典由REST接口传回.定义它们之间的关系,并且控制台记录每个模型的JSON(在它们各自的初始化函数中)显示它们都在整个集合级别的fetch()命令上正确地从服务器上调用/加载.

所以,这一切都很棒.

问题:我有"监听"每个模型的更新视图(以及应该在dom上渲染模板的绑定函数),并且它们根本不会"触发"(更不用说渲染......).主视图触发fetch(),没有问题,加载"顶级"模型并在dom上呈现它 - 但代表"顶级"模型中的"外键"模型的视图永远不会(尽管数据肯定会加载到每个模型中,如上面提到的每个模型的控制台登录所示.

非常感谢任何见解.

直接回复下面的Raynos回复(感谢Raynos!): 如果我为UpperLevelCollection定义了一个基本url,而UpperLevelModels存在于服务器上的(UpperLevelCollection url)/(UpperLevelModel id),那么我如何将这些LowerLevelCollections映射到字典键中服务器端的每个UpperLevelModel的一个JSON转储?换句话说,使用模型中的集合可以正确地处理来自服务器的数据转储(显然非常简化,但可以解决问题)并正确保存/更新/同步它?

[{
    "some_key": "Some string",
    "labels": ["A","List","Of","Strings"],
    "content": [{
        "id": "12345"
        "another_key": "Some string", 
        "list": ["A","list","of","strings"],
    },{
        "id": "67890"
        "another_key": "Some string", 
        "list": ["A","list","of","strings"],
    }],
}]
Run Code Online (Sandbox Code Playgroud)

javascript backbone.js backbone-relational

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

Backbone.js"创建"回调?

我有一个很好的流程来加载/渲染一个集合,为该集合添加一个新模型,通过API将新模型同步回数据库,然后重新渲染我的集合...但我是遇到一个我无法解决的问题:

是否有标准的"Backbone"方式在"创建/同步到后端 - >成功"事件中插入回调,还是应该覆盖创建功能?我可以使用"添加"方法(无论何时将新模型添加到dom上的集合/渲染时都会被ping通),但是当在页面加载时填充每个模型时它会触发...我真的只想要它当用户在页面已经呈现后创建/插入新模型时.

编辑:如果其他人有这个问题,下面与Elf来回导致我提出以下解决方案:

只需coll.trigger("newModelCreated", nextModel);在Backbone.collection.create中的成功回调中添加一些内容- 然后将事件绑定到与该集合关联的视图中的触发器(因此,在我的视图的初始化函数中)this.collection.bind('newModelCreated', this.createAndAdd, this);.

然后,当触发器被触发时,我只是将它路由到我的"addOne"函数的特殊版本(我已经配音createAndAdd),它渲染了我的新模型+我希望与新创建的模型相关联的其他DOM内容.

不确定是否是最佳解决方案,但它对我有用.

backbone.js

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