【问题标题】:Backbone.js dynamic URL problemsBackbone.js 动态 URL 问题
【发布时间】:2015-12-25 19:35:31
【问题描述】:

我有这个 Backbone.js 模型和视图代码,我试图从文本字段中获取一个值,并根据这个值从 REST api 获取数据。我在修改基本 URL 时遇到问题。

带有基本 URL 的模型:

var TodoItem = Backbone.Model.extend({
        urlRoot : 'http://localhost/Codeigniter/index.php/testcontroller',

        initialize: function(){
          this.set('id', 1);
        },
        defaults: {
          name: '',
          age: ''
        }
       });
      var todoitem = new TodoItem({name: "name"});

我设置新网址的功能:

getUrl: function(celebname){ 
        var urlstr = "http://localhost/Codeigniter/index.php/testcontroller/getdatabasedata?searchvalue="+celebname; 
        return urlstr; 
        },

从 REST api 获取数据的函数。

getdata: function (event) { 
        var celebname = $('#celebname').val(); 
        this.model.set({name: celebname});
        this.model.save({}, { urlRoot: this.getUrl(celebname)});

        this.model.fetch();
      },

目前我收到此错误:

GET http://localhost/Codeigniter/index.php/testcontroller/1

我无法使用 getURL 函数更改基本 url 以从输入字段中搜索值。而是使用基本 url 和末尾的 id。 如果我没有在模型的初始化函数中设置 ID,则会收到此错误:

POST http://localhost/Codeigniter/index.php/testcontroller/getdatabasedata?searchvalue=Rome

根据我在网上阅读的内容,这是因为没有为模型分配 id。 如何使用 GET 方法获取输入字段值、构建 URL 和获取数据? 谢谢

【问题讨论】:

  • 如果你试试 this.model.urlRoot= this.getUrl(celebname);在此行之前 this.model.save(); ?

标签: javascript php codeigniter url backbone.js


【解决方案1】:

Backbone 与真正的 RESTful API 配合得非常好。这里的部分问题是您拥有的 API 并没有真正与 Backbone 模型很好地映射,即它不完全是 RESTful。结果,您将不得不求助于“黑客”来让客户端和服务器相处融洽。动态修改模型的路径就是这样一种黑客攻击的示例。

如果您能详细说明您想到的用例,可能会帮助您获得更好的答案。

据我所知,您并没有真的试图坚持TodoItem。相反,您正在尝试使用一些基础数据预先填充它。如果这是真的,那么你真的不应该做一个save——你应该做一个fetch

getdata: function (event) { 
    var celebname = $('#celebname').val();
    var id = this.model.id;
    this.model.id = 'getdatabasedata';
    this.model.fetch({data: {searchvalue: celebname}});
    this.model.id = id;
}

传递data 选项将告诉jQuery 将其用作查询字符串参数。

再一次,这非常hacky,我不会推荐它,但它会完成你想要做的事情。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-29
  • 2023-03-16
  • 2011-09-11
  • 2013-10-01
  • 2011-10-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多