首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Sencha Touch 2中使用rest代理更新模型实例的正确方法

在Sencha Touch 2中使用rest代理更新模型实例的正确方法
EN

Stack Overflow用户
提问于 2016-06-20 13:09:08
回答 1查看 1K关注 0票数 1

我无法找到使用rest代理更新现有模型实例的适当方法,Sencha Touch总是将PUT而不是POST发送到REST后端。

我遵循了这些步骤:

从头开始生成一个新的proyecto。然后,使用sencha命令添加一个新模型:

代码语言:javascript
运行
复制
sencha generate model Test id,feld1

在idProperty模型中设置Test.js和rest代理:

代码语言:javascript
运行
复制
idProperty: 'id',
proxy :{
            type: 'rest',
            url: 'http://localhost:3000/products'
}

将此模型添加到app.js中

代码语言:javascript
运行
复制
models: [
        'Test'
]

然后,app.js的内部启动功能:

代码语言:javascript
运行
复制
launch: function() {
        var test = Ext.create('test.model.Test');
        test.set('id', '1');
        test.set('feld1', 'some text');
        test.save({
            success: function(){
                console.log('Ok');
            },
            failure: function(){
                console.log('Ko');
            }
        }):
    }

这将导致向后端服务器发出POST请求,而不是在更新和现有模型实例时预期的PUT请求。我假设Sencha知道它是一个现有的实例,因为idPropertyField (id)不是空的或空的。

代码语言:javascript
运行
复制
Request URL:http://localhost:3000/products?_dc=1466427599915
Request Method:POST
Request Payload: {id: "1", feld1: "some text"}

使用REST代理更新Sencha Touch中现有模型实例的正确方法是什么?如何使它触发一个PUT请求而不是POST?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-21 14:15:10

如果在保存之前将记录的phantom属性设置为false,则它将作为更新的记录而不是新的记录被选中。

以这个小提琴为例:https://fiddle.sencha.com/#fiddle/1cd1

如果您查看Ext.data.Modelsave方法(http://docs.sencha.com/extjs/6.0.1-classic/src/Model.js-1.html#Ext.data.Model-method-save),您可以看到这是如何确定的。

代码语言:javascript
运行
复制
action = dropped ? 'destroy' : (phantom ? 'create' : 'update'), 

Ext.data.ProxyStore类中有一种类似的过滤方法,用于存储同步- http://docs.sencha.com/extjs/6.0.1-classic/Ext.data.ProxyStore.html#method-filterNew

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37923463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档