小编Joe*_*e B的帖子

如何在路由或控制器中访问RESTAdapter的主机和命​​名空间?

我在一些控制器和路由中使用了一些自定义的AJAX请求,例如:

 var loginRoute = Ember.Route.extend({

   actions: {

     submitLogin: function(user, pass) {

       var data = { username: user, password: pass };

       Ember.$.post('http://192.168.2.10/api/v1/login', data).then();
     }

   }
 });
Run Code Online (Sandbox Code Playgroud)

这工作正常,但在开发时我可能有一个不同的IP(例如更改路由器),我希望能够访问我在扩展RESTAdapter时定义的URL(主机+命名空间),这样我只需要更改host和/或namespace一次,而不是我做自定义ajax请求的每个地方.

 App.ApplicationAdapter = DS.RESTAdapter.extend({
   host: 'http://192.168.2.10',
   namespace: 'api/v1'
 });
Run Code Online (Sandbox Code Playgroud)

ember.js ember-data

16
推荐指数
1
解决办法
4110
查看次数

获取hasMany关系的长度而不触发获取

模型:

DS.Model.extend({
  title: DS.attr('string'),
  body: DS.attr('string'),
  comments: DS.hasMany('comment', { async: true} ),

  hasComments: Ember.computed.gt('comments.length', 0)
});
Run Code Online (Sandbox Code Playgroud)

有效载荷:

{ 
  "id": "abcdefg",
  "title": "some cats are cool",
  "body": "",
  "comments: ["100", "101", "102"]
}
Run Code Online (Sandbox Code Playgroud)

但是hasComments计算属性会单独触发每个注释的提取.我不希望这样:D

我知道这有效(避免了获取),但进入私有API:

hasComments: Ember.computed.gt('data.comments.length', 0)

ember.js 1.8.1

ember-data 1.0.0-beta.11

关于根据长度实现计算属性的任何其他建议

ember.js ember-data

5
推荐指数
2
解决办法
1107
查看次数

具有与同一模型的多个关系的模型上的createRecord给出了多个可能的反向关系错误

我已经确定了一些我想看看是否有人可以解释的行为.

我在这里做了一个jsfiddle http://jsfiddle.net/iceking1624/PpWec/17/.要测试行为,请打开Web控制台,只需在"添加问题"按钮旁边的文本字段中键入内容,然后单击按钮("添加问题").

以下是DS.Model架构:

App.Session = DS.Model.extend({
   "questions" : DS.hasMany('App.Question') ,
   "firstQuestion" : DS.belongsTo('App.Question')
});
App.Question = DS.Model.extend({
   "session" : DS.belongsTo('App.Session'),
   "choices" : DS.hasMany('App.Choice'),
   "text"    : DS.attr('string')
});
App.Choice = DS.Model.extend({
   "session"  : DS.belongsTo('App.Session'),
   "question" : DS.belongsTo('App.Question'),
   "text"     : DS.attr('string')
});
Run Code Online (Sandbox Code Playgroud)

当我在里面执行以下操作SessionController然后调用该addQuestion函数:

App.SessionController = Ember.ObjectController.extend({
   addQuestion: function() {
      var sessionModel = this.get('model');

      var question = App.Question.createRecord({
         "session" : sessionModel
      });

      this.get('questions').pushObject(question)
   }
});
Run Code Online (Sandbox Code Playgroud)

我得到以下'错误'但它仍然按预期运行:

错误:断言失败:您在App.Question上定义了"会话"关系,但在App.Session上找到了App.Question类型的多个可能的反向关系.

现在我想出来是因为里面App.Session我有两个引用的字段App.Question:

   "questions" : DS.hasMany('App.Question') …
Run Code Online (Sandbox Code Playgroud)

ember.js

2
推荐指数
1
解决办法
1328
查看次数

标签 统计

ember.js ×3

ember-data ×2