标签: ember-data

从商店中删除记录而不会在DS.Store#commit上导致服务器调用

我正在开发一个推送应用程序,需要从DS.Store中删除项目而不调用任何操作.我可以使用load()插入对象,但需要能够在另一个客户端上删除对象后"卸载"它.

谢谢

ember.js ember-data

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

使用父路由参数和ember-data的正确方法?

在我的应用程序中,我试图保持路由结构尽可能接近API结构,这对于基本情况有用,但我仍然对以下情况感到困惑:

(参考http://emberjs.com/guides/outlets/#toc_nesting的例子)

检索/posts/:post_id/comments数据的最佳方法是什么(假设它没有给我/posts/:post_id)?

我应该以App.Comment.find(...)某种方式将帖子ID传递给comments.deserialize(...)方法吗?有没有比获得帖子ID更好的方法router.getPath('postController.content._id')?我正在使用修改后的DS.RESTAdapter.

ember.js ember-data ember-old-router

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

Ember数据夹具适配器

是否有夹具适配器的提交方法?它有什么作用?据我所知,store.commit()当与REST适配器一起使用时会发出API调用.

我可以使用isLoaded夹具适配器的属性吗?

基本上我有2个记录在我的控制器名为xy和具有的许多记录的属性内容y类型.咖啡代码如下:

someMethod: (->
  content.removeObject(y)
).('x.isLoaded')

anotherMethod: ->
  //modify x
  Application.store.commit()
Run Code Online (Sandbox Code Playgroud)

当我调用anotherMethod它更新x并在商店上运行提交时,因此someMethod被调用.我的实际应用程序运行正常,但如果测试从内容和商店中someMethod删除记录y.难道是isLoadedcommit不是为固定数据存储?

ember.js ember-data

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

如何修改ember-data的REST适配器生成的URL?

我可以使用以下方法解释多元化:

DS.RESTAdapter.configure("plurals", {
  query: "queries"
});
Run Code Online (Sandbox Code Playgroud)

但我需要将".json"附加到正在生成的所有路由,因为我正在使用的API会抛出错误,如果不这样做的话.苦苦寻找有关ember-data的文档,最好的方法是什么?

ember.js ember-data

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

Ember - Abort ajax请求

我想知道如何中止请求.

例如,我发布App.MyModel.find(),后来我想在从服务器返回之前取消/中止它.我希望这样的事情:

var res = App.MyModel.find();   //request sent to server
res.abort();                    // abort the request before completion
Run Code Online (Sandbox Code Playgroud)

但这不起作用 - 返回的对象是a promise,既没有abort也没有cancel方法.

澄清

我正在寻找如何abort在底层XMLHttpRequest对象上调用该方法.

ajax xmlhttprequest ember.js ember-data

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

在ember中保存模型时尝试调用loadedData

我一直在我的应用程序中收到此错误,但不知道是什么导致它.

每当我提交数据存储时它都会发生:

loadedData在状态rootState.loaded.updated.inFlight中尝试处理事件.调用未定义

任何人?

以下是导致它的代码:

var ts_setting;

ts_setting = Cluey.Setting.find(Cluey.SettingsKeyIDs.API_TIMESTAMP);

if (ts_setting.get('value') != null) {
  console.log("Found Timestamp");
} else {
  console.log("Creating Initial Timestamp...");
  ts_setting.set("id", Cluey.SettingsKeyIDs.API_TIMESTAMP);
  ts_setting.set("value", 0);
  Cluey.store.commit();
}
Run Code Online (Sandbox Code Playgroud)

编辑

我把它归结为导致错误的以下代码(用coffeescript编写).问题是,第一次运行代码时,当数据存储中的对象首次存在时,运行正常.当我在已包含具有指定id的记录的数据存储上运行代码时,会发生错误.这可能有助于您破译正在发生的事情.

ts_setting = Cluey.Setting.find(Cluey.SettingsKeyIDs.API_TIMESTAMP)
ts_setting.get('value')
ts_setting.set("id", Cluey.SettingsKeyIDs.API_TIMESTAMP)
ts_setting.set("value", 0)
Cluey.store.commit()
Run Code Online (Sandbox Code Playgroud)

编辑2

我在创建记录时遇到类似的问题:

ts_setting = Cluey.Setting.createRecord
    id: Cluey.SettingsKeyIDs.API_TIMESTAMP,
    value: 0

Cluey.store.commit()
Run Code Online (Sandbox Code Playgroud)

上面的代码给了我这个错误:

Uncaught Error: Attempted to handle event `loadedData` on <Cluey.Setting:ember327:1> while in state rootState.loaded.created.inFlight. Called with undefined
Run Code Online (Sandbox Code Playgroud)

编辑3

所以事实证明我@timestamp = ts_setting.get('value')在提交商店后正在调用,我认为这是导致问题,因为我试图从尚未保存的对象中获取一些数据.

ember.js ember-data

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

在模型上删除Ember Data侧载属性

我正在和我一起工作

  • 恩伯RC3
  • Ember数据修订版12
  • 把手RC3

我在许多模型上都有Ember Data加载关系,因此我可以模拟侧载关系,如下所示:

// Models
App.Client = DS.Model.extend({
    company: DS.attr('string'),
    accountNumber: DS.attr('string'),
    startDate: DS.attr('mysqlDate'),

    // Relationships
    campaigns: DS.hasMany('App.Campaign'),
    users: DS.hasMany('App.User'),
    phones: DS.hasMany('App.Phone'),
    addresses: DS.hasMany('App.Address')
});

App.User = DS.Model.extend({
    email: DS.attr('string'),
    password: DS.attr('string'),

    // Relationships
    userType: DS.belongsTo('App.UserType'),
    role: DS.belongsTo('App.Role'),
    clients: DS.hasMany('App.Client'),
    phones: DS.hasMany('App.Phone'),
    addresses: DS.hasMany('App.Address')
});

<!-- template -->
<script type="text/x-handlebars" data-template-name="user/index">
  <h2>{{email}}</h2>
  <h5>Clients</h5>
  <ul>
    {{#each client in model.clients}}
      <li>{{client.company}}</li>
    {{/each}}
  </ul>
</script>
Run Code Online (Sandbox Code Playgroud)

这非常有效...除了每10次重新加载一次之外.每隔一段时间,侧载关系(在这种情况下是hasMany关系model.clients)不会渲染到模板,而所有其他模型属性(不是关系)都会呈现给模板.奇怪的是它每隔一段时间才会这样做.

我不太确定如何为这个问题设置js小提琴,所以我想问:

在调用堆栈中我可以设置一个断点来查看实际渲染的属性是什么?

{{debugger}}在相关模板中使用,我只是不确定在调用堆栈中检查应用程序状态的最佳位置.

handlebars.js ember.js ember-data

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

EmberJS有很多关系和Fixtures

我正在学习EmberJS并需要一些帮助.

我有两个模型:Catalog和CatalogCourses.目录中有许多目录.我只是想用一些灯具测试这种关系.

当我加载Catalog的记录时,关系夹具(CatalogCourses)不会加载.我已经坚持了几个小时,我认为这样做应该很简单,所以我要求你的帮助.

以下是模型:

App.Catalog = DS.Model.extend({
  year: DS.attr('string'),
  catalogCourses: DS.hasMany('catalog_course')
});

App.CatalogCourse = DS.Model.extend({
  catalog: DS.belongsTo('catalog')
});
Run Code Online (Sandbox Code Playgroud)

以下是赛程:

App.Catalog.FIXTURES = [
  {
    id: 1,
    year: '2014',
    catalog_courses: [ 1 ]
  }
];

App.CatalogCourse.FIXTURES = [
  {
    id: 1,
    catalog: 1
  }
];
Run Code Online (Sandbox Code Playgroud)

这是我试图简单列出这种关系的小提琴:http: //jsfiddle.net/6Evrq/75/

我正在使用ember v1.5.0,ember-data v1.0.0-beta.7,handlebars v1.3.0和jQuery 1.11.0

我尝试使用该{async: true}选项,但问题仍然存在.

有什么想法吗?

ember.js ember-data

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

使用RESTAdapter自定义发布请求

我的模型通过Ember默认使用服务器RESTAdapter.

我刚刚/mail在我的服务器上创建了一个自定义端点,如果提供了名称,有效的电子邮件地址和文本,它会发送一封电子邮件.

如何让Ember发送自定义的后期请求?是否可以没有Ember.ajax?

ember.js ember-data ember-cli

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

如何将数据从路由发送到组件?

我是初学者.

我想将数据从路由发送到组件.

import Ember from 'ember';
var model = null;
export default Ember.Route.extend({
    model() {
        return true;
    }
});
Run Code Online (Sandbox Code Playgroud)

我已经在路线中定义了这个模型,现在我想在组件js文件中使用这个模型.我只是做控制台日志,但它给出了undefined.我的组件js代码如下

import Ember from 'ember';
export default Ember.Component.extend({
    didInsertElement() {
        console.log(model);
    }
});
Run Code Online (Sandbox Code Playgroud)

所以任何人都可以建议在组件中使用路由数据的实际方法是什么.

ember.js ember-data ember-cli

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