有没有办法知道为什么记录在ember数据中处于脏状态,我的意思是什么是已经改变的属性和关系.
调用findAll之后我有isDirty = true,我想调试为什么会这样.
非常感谢
我们正在开发一个消息传递系统,允许用户向许多社交媒体帐户提交消息,这将导致每个帐户发布一个帖子.在我们的应用程序中,我们有帐户,消息和帖子.消息是我的内容的单个实例,然后可以作为帖子发送.
帐户可以包含许多消息.
消息可以绑定到许多帐户.消息可以有很多帖子.
帖子属于消息.
我们对数据建模如下:
Social.Account = DS.Model.extend({
username: DS.attr('string'),
messages: DS.hasMany('Social.Message')
});
Social.Message = DS.Model.extend({
user_id: DS.attr('number'),
text: DS.attr('string'),
accounts: DS.hasMany('Social.Account'),
posts: DS.hasMany('Social.Post')
});
Social.Post = DS.Model.extend({
created: DS.attr('date'),
text: DS.attr('string'),
message: DS.belongsTo('Social.Message')
});
Run Code Online (Sandbox Code Playgroud)
和FIXTURE数据看起来像这样:
Social.Account.FIXTURES = [{
id: 1,
username: "commadelimited",
messages: [1, 2]
}];
Social.Message.FIXTURES = [{
id: 1,
user_id: 1,
text: 'This is message #1 sent by account #1',
accounts: [1],
posts: [1]
}, {
id: 2,
user_id: 1,
text: 'This is message #2 sent by …Run Code Online (Sandbox Code Playgroud) JSFiddle - http://jsfiddle.net/9gA4y/1/
我有以下型号:
contact => (many2many) => tags
contact => (one2many) => address
Run Code Online (Sandbox Code Playgroud)
Ember数据模型:
App.Contact = DS.Model.extend({
name: attr('string'),
tags: hasMany('App.Tag'),
addresses: hasMany('App.Address')
});
App.Address = DS.Model.extend({
street: attr('string'),
country: attr('string'),
contacts: belongsTo('App.Contact')
})
App.Tag = DS.Model.extend({
name: attr('string'),
contacts: hasMany('App.Contact')
});
Run Code Online (Sandbox Code Playgroud)
我想出了添加新的联系人记录
我正在开发一个非常基本的ember应用程序,但我似乎无法让它显示belongssto模型.
我的用户模型:
News.User = DS.Model.extend({
username: DS.attr('string'),
items: DS.hasMany('News.Item')
});
News.User.FIXTURES = [
{
"id": 1,
"username": "Bobba_Fett",
"items": [1,2]
}]
Run Code Online (Sandbox Code Playgroud)
我的商品型号:
'use strict';
News.Item = DS.Model.extend({
title: DS.attr('string'),
url: DS.attr('string'),
domain: DS.attr('string'),
points: DS.attr('number'),
comments: DS.hasMany('News.Comment'),
user: DS.belongsTo('News.User')
});
News.Item.FIXTURES = [
{
"id": 1,
"title": "This is story 1",
"url": "http://google.com",
"domain": "google.com",
"points": 45,
"comments": [1,2,3],
"user_id": 1
},
{
"id": 2,
"title": "This is another story",
"url": "http://yahoo.com",
"domain": "yahoo.com",
"points": 30,
"comments": [1,2,3],
"user_id": 1 …Run Code Online (Sandbox Code Playgroud) 我想知道Ember.js RESTAdapter的ajax函数中有什么success和error做什么.
hash.success = function(json) {
Ember.run(null, resolve, json);
};
hash.error = function(jqXHR, textStatus, errorThrown) {
Ember.run(null, reject, jqXHR);
};
Run Code Online (Sandbox Code Playgroud)
我知道hash是通过AJAX发送的数据,但是扮演success和error扮演什么角色?我假设它们是基于成功或错误的AJAX响应运行的,对吧?它们是在调用AJAX之前设置的,作为回调?他们是如何工作的?
我只想更改从夹具适配器获取数据到REST适配器.我在文档中找不到正确的语法...无论我尝试什么,都不会对REST接口执行JSON调用.
有人可以帮忙吗?
PS.当我只使用JQuery调用(return $.getJSON('http://localhost:3000/articles.json');)时,这是有效的,但如上所述,我想使用Ember REST适配器...
我的模特:
App.Article = DS.Model.extend({
title: DS.attr('string'),
author: DS.attr('string'),
body: DS.attr('string')
});
Run Code Online (Sandbox Code Playgroud)
我的修复适配器:
App.Store = DS.Store.extend({
revision: 12,
adapter: 'DS.FixtureAdapter'
});
Run Code Online (Sandbox Code Playgroud)
我的REST适配器(不工作)
App.Store = DS.Store.extend({
revision: 12,
adapter: DS.RestAdapter.create({
url: 'http://localhost:3000'
})
});
Run Code Online (Sandbox Code Playgroud)
我的路线
App.ArticleRoute = Ember.Route.extend({
model: function () {
App.Article.find();
//return $.getJSON('http://localhost:3000/articles.json');
}
});
Run Code Online (Sandbox Code Playgroud) 我有这个结构:
App.Router.map(function() {
this.resource('board', {path: '/board'}, function() {
this.route('new', {path: '/new'});
this.route('show', {path: '/show/:board_id'});
});
});
App.Board = DS.Model.extend({
title: DS.attr('string'),
initialAmount: DS.attr('number'),
initialDate: DS.attr('date'),
boardItems: DS.hasMany('BoardItem'),
_csrf: DS.attr()
});
App.BoardItem = DS.Model.extend({
title: DS.attr('string'),
income: DS.attr('number'),
outcome: DS.attr('number'),
date: DS.attr('date'),
itemType: DS.attr('string'),
board: DS.belongsTo('Board')
});
App.BoardShowRoute = Ember.Route.extend({
model: function(params) {
return this.store.find('board', params.board_id).sort();
}
});
Run Code Online (Sandbox Code Playgroud)
在视图中,我列出了这样的董事会项目:
{{#each boardItems}}
Run Code Online (Sandbox Code Playgroud)
我想要做的是按日期排序boardItems,我找不到这样做的方法......任何想法?
谢谢!
它可以通过这种方式在"正常"的Ember中完成:
App.Person = DS.Model.extend({
name: DS.attr('string')
});
App.Soldier = App.Person.extend({
rank: DS.attr('string')
});
Run Code Online (Sandbox Code Playgroud)
我怎样才能在Ember-cli中实现这一目标?我不知道如何访问原始类型的Person.
我试图过滤ember-data'hasMany'字段的内容.我的模型有一些子参数,我想在我的控制器上过滤到属性'childOptions'并在模板中显示
{{#each childOptions}}stuff{{/each}}
Run Code Online (Sandbox Code Playgroud)
当我把它放在我的控制器上时,它工作,每个迭代适当的值:
childOptions: Ember.computed.filterBy('model.subquestions', 'surveyQuestionType.name', 'childOption'),
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做时,没有显示任何内容.
childOptions: Ember.computed.filter('model.subquestions', function(subquestion) {
return subquestion.get('surveyQuestionType.name') === 'childOption';
}),
Run Code Online (Sandbox Code Playgroud)
'surveyQuestionType'是DS.belongsTo,它存在于'subquestions'模型中,并且具有'name'属性.
我想理解为什么'filterBy'方法有效,而'filter'方法却没有(因此我将来可以使用'filter'来处理更复杂的查询).我认为这与promises和subquestion.get('property')我在filter函数中使用的语法有关.
编辑:
这是模型:
App.SurveyQuestion = DS.Model.extend(Ember.Validations.Mixin, {
surveyQuestionType: DS.belongsTo('surveyQuestionType', { async: true }),
display: DS.belongsTo('surveyQuestionDisplay', { async: true, inverse: 'surveyQuestion' }),
sortOrder: DS.attr('number'),
parent: DS.belongsTo('surveyQuestion', { async: true, inverse: 'subquestions' }),
parentDependencyCriteria: DS.attr('string'),
required: DS.attr('boolean'),
surveySections: DS.hasMany('surveySectionQuestion', { async: true, inverse: 'surveyQuestion' }),
subquestions: DS.hasMany('surveyQuestion', { async: true, inverse: 'parent' })
});
Run Code Online (Sandbox Code Playgroud) 我有一条路线,用户可以为您的帐户选择更多选项.但是当我进入这条路线时,ember会向我的API发送一个GET.我是如何避免这种情况的,因为我有我需要的信息.
我正在使用Ember JS 2x.
import Ember from 'ember';
export default Ember.Route.extend({
searchPlaces: Ember.inject.service(),
model() {
return this.store.findAll('user');
},
afterModel(model) {
let token = model.get('token');
let places = model.get('places');
this.set('places', places);
this.set('token', token);
}
});
Run Code Online (Sandbox Code Playgroud)