我对Ember非常,非常非常新:-)
我有一个DS.Model,我想用.json强制扩展,从Rails服务器检索数据.
来自服务器的网址正在运行,我可以在浏览器的调试器中看到,网址不是DS.model网址中指定的网址
var App = Ember.Application.create();
App.store = DS.Store.create({
adapter: DS.RESTAdapter.create({url: 'http://127.0.0.1:3000'}),
revision: 8
});
App.Expedient = DS.Model.extend({
url: 'expedients/%@.json',
procedencia: DS.attr('string'),
interessat_nom: DS.attr('string'),
data_signatura_provisional: DS.attr('date')
});
Run Code Online (Sandbox Code Playgroud)
手动获取权宜之计:
var model2 = App.store.find(App.Expedient, 125000);
Run Code Online (Sandbox Code Playgroud)
输出控制台:
OPTIONS http://127.0.0.1:3000/expedients/125000 404 (Not Found)
Run Code Online (Sandbox Code Playgroud)
我想成为这样的网址:
http://127.0.0.1:3000/expedients/125000.json
Run Code Online (Sandbox Code Playgroud)
此外,我试图真正改变DS.Model网址与另一个不同的名称,如下所示:
App.Expedient.reopenClass({
url: 'mockurl/%@.json'
});
Run Code Online (Sandbox Code Playgroud)
但浏览器的控制台与之前的"url"相同,我不知道为什么Ember-Data没有得到模型的url.
谢谢!
问候,
PS.从两个来源测试Ajax时,我知道Access-Control-Allow-Origin CORS问题
我需要手动检查从基本查找返回的ember-data模型(此模型未绑定到模板,而是需要动态应用某些逻辑)
到目前为止,我尝试了以下(没有运气)
App.Foo.find().then(function(model) {
console.log("here with the ember-data payload");
console.log(model.get('length'));
}, function(error) {
console.log("broken");
});
Run Code Online (Sandbox Code Playgroud)
成功块确实触发但它似乎总是返回0结果,但是当我在chrome中查看网络选项卡时,它显示了一个有效的json有效负载,它在我正在使用的这个promise钩子之外工作.
是否有可能用ember-data rev 11劫持承诺解决方案?
我有一个国家/地区下拉列表,根据所选国家/地区,我想填写一个城市下拉列表.
有人可以根据另一个下拉选项提供一个如何填充下拉列表的示例吗?
在我的应用程序,我有一个ApplicationAdapter,其ajaxError方法是定制的.在该方法中,我希望能够转换到给定的路线.我怎样才能做到这一点?
App.ApplicationAdapter = DS.RESTAdapter.extend({
ajaxError: function(jqXHR) {
var error = this._super(jqXHR);
if (jqXHR) {
switch(jqXHR.status) {
// [...]
case 401:
// How can I transitionTo('login') here?
}
// [...]
}
}
});
Run Code Online (Sandbox Code Playgroud) 也许我忽略了什么,但我无法弄清楚我是怎么想的
我有一个来自服务器的JSON,看起来像这样
{
"articles": [
{
"user": {
"name": "user",
"username": "user",
"_id": "52755cba74a1fbe54a000002"
},
"_id": "5275698c53da846e70000001",
"__v": 0,
"content": "content",
"title": "title",
"created": "2013-11-02T21:07:24.554Z"
}
]
}
Run Code Online (Sandbox Code Playgroud)
在模板中,我正在访问内容并且创建得很好,但是当我尝试获取user.name时,没有任何结果:
{{#each article in model}}
<span>{{ article.title }}</span>
<span>by {{ article.user.name }}</span>
<span>{{ article.created }}</span>
{{/each}}
Run Code Online (Sandbox Code Playgroud)
我注意到在模型中,无论我没有定义,都不会出现在模板中,所以它看起来像这样:
title: DS.attr('string'),
content: DS.attr('string'),
created: DS.attr('date')
Run Code Online (Sandbox Code Playgroud)
但是当我尝试添加:
user: {
name: DS.attr('string')
}
Run Code Online (Sandbox Code Playgroud)
为了匹配嵌套的json,我收到一个错误.
ember是不是能够处理嵌套的json?如果是,那怎么样?
谢谢.
我在使用Ember-Data的特定案例时遇到问题.
通常,Ember期望模型类,路径,ajax请求和返回的JSON都遵循类似的模式.
RESTAdapter尝试自动构建一个URL以发送到服务器,这在某些情况下是可以的,但是我需要完全控制我的一些请求URL,特别是在添加其他参数或将API与路由匹配时一个完全不同的URL结构.
可悲的是,Ember没有这方面的指南,尽管我确实找到了关于这个的东西 buildURL method
虽然我不想破坏ember数据只是为了修复一些用例,但我对源代码的根本不足以找出底层发生了什么.
api/restview-debtorsdebtor/list?page_size=10&page_number=1.我完全迷失了怎么做.我无法改变API结构......根据它们的服务太多了.
一些小进展
我继续使用我目前的知识来更接近解决方案.
RESTAdapter为"list"将命名空间更改为"api/rest/debtor"store.find('list')现在的结果是AJAX调用几乎是正确的......我只需要将这些额外的参数添加到服务器查询中.
这就是我现在所处的位置......我可以通过模型钩子添加这些服务器查询吗?或者我还可以通过ember动作控制服务器查询以获取新的AJAX请求吗?
退后一点.到目前为止我的方法是一个好习惯吗?因为我正在使用路由的模型钩子,要将模型设置为列表,这是否仅在直接键入路径URL时才有效?
这么多问题:p
我从我的数据库中提取了许多对象作为searchResult对象(我已经定义和设置的模型).
现在我需要将这些对象放在JS数组中 - 如果它们尚未存在于它们中.JS数组有一个"if --- in array",但它没有真正比较自定义对象.最简单的解决方案是使用双循环并使用数组中每个已存在的对象检查每个传入对象,但我的searchResult对象具有几个我无法花时间比较的属性.
那么有没有办法检查,例如,Ember本身是否(searchResult1 == searchResult2)?
我知道有一种类似的混合,但我不确定这是否有帮助 - 甚至如何使用它.
我很贪婪,但我已经花了好几个小时解决这个问题而无法自己解决这个问题.这是我的路线(使用ember-cli):
import Ember from 'ember';
export default Ember.Route.extend({
actions: {
save: function() {
var controller = this.controller;
controller.get('model').save().then(function(account) {
console.log('account saved');
controller.transitionToRoute('accounts.index');
}, function(response) {
console.log('account NOT saved');
});
return false;
},
deleteAccount: function() {
var controller = this.controller;
controller.get('model').destroyRecord().then(function(account) {
console.log('account deleted');
controller.transitionToRoute('accounts.index');
}, function(response) {
console.log('account NOT deleted');
});
return false;
},
cancel: function() {
this.controller.get('model').rollback();
this.transitionToRoute('accounts.index');
return false;
},
}
});
Run Code Online (Sandbox Code Playgroud)
我在我的模板(按钮)中触发deleteAccount操作.有趣的是,代码实际上是删除记录.它发送成功的删除请求,api删除该帐户.但它永远不会转换为accounts.index.而是记录"帐户未删除".如果我手动转到account.index,那么模型就不再存在(正如人们所期望的那样).我从官方的ember文档中获取了代码.请参阅:http://emberjs.com/api/data/classes/DS.Model.html#method_destroyRecord
那么为什么在实际删除模型时承诺总是失败?非常感谢您的帮助!
顺便说一句:这是一个编辑路线,其中account_id作为参数传递,因此无需在路线上手动定义"模型功能".以防万一有人在想.
我正在JSON.stringify()使用下面的代码尝试控制器内部路径的模型.它工作,它返回所有模型属性,除了模型的实际ID.我们也可以收到身份证吗?
var plan = this.get('model');
var reqBody = JSON.stringify(
{
plan,
token
});
Run Code Online (Sandbox Code Playgroud) 我正在开发一个带有Rails后端的Ember应用程序,使用优秀的JSONAPI :: Resources gem来公开我的数据.
我想利用来从我的后端的记录store.findRecord,store.query等,而侧面加载一定的关系.JSONAPI :: Resources 支持 规范的这一部分,但我无法弄清楚如何使Ember Data包含?include=...请求URL中的参数.
如何指示Ember Data(2.2.0)在获取资源时要求后端包含关系?