这个截屏视频:http://www.embercasts.com/episodes/getting-started-with-ember-model用于Ember.model创建这样的人物模型:
App.Person = Ember.Model.extend({
name : Ember.attr()
})
Run Code Online (Sandbox Code Playgroud)
该文档给出了用这个例子Ember.Object
App.Person = Ember.Object.extend({
say : function(thing) {
alert(thing);
}
});
Run Code Online (Sandbox Code Playgroud)
此外,在定义模型部分下,给出了该示例使用的示例DS.model
App.Person = DS.Model.extend({
firstName: DS.attr('string'),
lastName: DS.attr('string'),
birthday: DS.attr('date'),
fullName: function() {
return this.get('firstName') + ' ' + this.get('lastName');
}.property('firstName', 'lastName')
});
Run Code Online (Sandbox Code Playgroud)
这三者之间有什么区别以及何时使用哪种?
我试图将ember-models链接到ember-table以从服务器中提取分页记录,并在向下滚动时将它们添加到表中.
我可以通过在http://addepar.github.io/ember-table/上的ajax示例中请求我的api url来获取它的工作,但我无法弄清楚如何将它与ember-model集成以创建和ember对象,然后将它们添加到表中.
这是我的代码,只是发出ajax请求并添加到表.任何人都可以告诉我如何改变这个使用ember-model/ember-data代替.
App.TableAjaxExample = Ember.Namespace.create()
App.TableAjaxExample.LazyDataSource = Ember.ArrayProxy.extend
createGithubEvent: (row, event) ->
row.set 'id', event.id
row.set 'name', event.name
row.set 'isLoaded', yes
requestGithubEvent: (page) ->
content = @get 'content'
start = (page - 1) * 30
end = start + 30
per_page = 40
# something like this ???
#App.Detail.find(type: 'companies', page: page, per_page: per_page).on 'didLoad', ->
url = "http:/myurl.dev/admin/details.json?type=companies&page=#{page}&per_page=30"
Ember.$.getJSON url, (json) =>
json.details.forEach (event, index) =>
row = content[start + index]
@createGithubEvent row, event
[start...end].forEach …Run Code Online (Sandbox Code Playgroud) 有什么区别
// 'this' is the controller
this.get('model').save();
Run Code Online (Sandbox Code Playgroud)
和
// 'this' is the controller
this.get('model').get('store').commit();
Run Code Online (Sandbox Code Playgroud)
? 在我做的小测试中,他们都给了我相同的结果.我应该使用哪一个?
我调查了第一个,它调用了
DS.Model = Ember.Object.extend(
...
save: function() {
this.get('store').scheduleSave(this);
var promise = new Ember.RSVP.Promise();
this.one('didCommit', this, function() {
promise.resolve(this);
});
return promise;
},
Run Code Online (Sandbox Code Playgroud)
那么问题就变成了,this.get('store').scheduleSave(this)和之间的主要区别是this.get('store').commit()什么?
DS.Store = Ember.Object.extend(DS._Mappable, {
...
scheduleSave: function(record) {
get(this, 'currentTransaction').add(record);
once(this, 'flushSavedRecords');
},
...
/**
This method delegates committing to the store's implicit
transaction.
Calling this method is essentially a request to persist
any changes …Run Code Online (Sandbox Code Playgroud) 我有这个ember应用程序:
Ember : 1.3.2
Ember Model : 0.0.11
Handlebars : 1.3.0
jQuery : 1.9.1
Run Code Online (Sandbox Code Playgroud)
使用此资源图:
App.Router.map(function () {
this.resource('dimensions', function() {
this.resource('dimension', { path: ':dimension_id'}, function () {
this.resource('value', { path: 'values/:value_id' });
});
});
});
Run Code Online (Sandbox Code Playgroud)
这允许我嵌入{{outlet}}填充"维度"模板的"维度"模板,并嵌入{{outlet}}填充"值"模板的"维度"模板中.
除了"值"模板中的链接到帮助程序之外,所有工作都很顺利,它不接受更多参数,也不接受其他模型,如ember API文档中所述.
哪个是在深层嵌套路由中处理链接的最佳方法?
我有这个小提示来表明我的问题:http: //jsfiddle.net/vsiguero/pQpE3/5/
谢谢你的帮助!
也许使用常规的Ember应用程序,将所有代码放在app.js中对我来说会更容易.但由于我使用的是Ember CLI,因此无法在我的路线中访问我的模型.我还在尝试学习如何使用Ember CLI,所以请帮帮我.
因为我只想激活AJAX调用并在我的UI上渲染数据,所以我下载并将Ember Model库添加到我的项目中.我认为不需要使用Ember Data.这是我所指的Ember Model文档:https://github.com/ebryn/ember-model#example-usage.话虽如此,这是Ember CLI提出的我的目录结构:
|-app
|-controllers
| |-customers.js
|-models
| |-customers.js
|-routes
| |-customers.js
|-templates
| |-customers.hbs
|-app.js
|-index.html
|-main.js
|-router.js
Run Code Online (Sandbox Code Playgroud)
这是我只关注问题的实际项目结构的更简单的表示.正如Ember Model文档中提出的,我将以下代码添加到我的Customers模型(model\customers.js)中:
export default Ember.Model.extend({
nameid: attr(),
firstname: attr(),
middlename: attr(),
lastname: attr(),
prefixname: attr(),
suffixname: attr()
});
this.url = "http://restapi/api/customers";
this.adapter = Ember.RESTAdapter.create();
Run Code Online (Sandbox Code Playgroud)
请注意,我必须执行"export default"而不是"App.Customers = Ember.Model.extend ...".这是Ember CLI惯例.因此,当我尝试访问我在Customers Route中创建的模型时,我收到错误"加载路径时出错:ReferenceError:App未定义"..
客户路线代码:
export default Ember.Route.extend({
model: function () {
App.Customers.find();
},
actions: {
addnew: function(){
//logic of saving edited customer
alert('customer …Run Code Online (Sandbox Code Playgroud) 我已经扩展了此stackoverflow答案中给出的程序,以便有一个程序一次性删除所有记录.但是,删除仅在批处理中发生,并且不会一次删除所有内容.
这是我在这个JSBin中使用的函数的片段.
deleteAllOrg: function(){
this.get('store').findAll('org').then(function(record){
record.forEach(function(rec) {
console.log("Deleting ", rec.get('id'));
rec.deleteRecord();
rec.save();
});
record.save();
});
}
Run Code Online (Sandbox Code Playgroud)
知道如何修改程序,以便可以立即删除所有记录吗?
我也尝试过model.destroy()和model.invoke('deleteRecords')但它们不起作用.
任何帮助是极大的赞赏.谢谢你的帮助!
我试图理解使用ember-model来侧载数据的正确方法
我让json像这样回来(为了空间的缘故,我把它从实际的json中减去了一点)
{
"classrooms" : [
{
"classroom_name" : "Class 1",
"id" : 1,
"teacher_id" : 3,
"grade" : 5,
"assignments" : [
],
"students" : [
{
"id" : 5,
"last_name" : "Ford",
"first_name" : "Henry",
"district_id_number" : "MD454"
}
]
},
{
"classroom_name" : "Class 3",
"id" : 2,
"teacher_id" : 3,
"grade" : 4,
"assignments" : [
{
"id" : 5,
"assignment_overview" : "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod …Run Code Online (Sandbox Code Playgroud) 在我的ember模型模型中,我需要从枚举中设置String属性.有没有可能与ember模型?
通过示例我想要一个Book模型:
App.Book({
id: Ember.attr(),
title: Ember.attr( 'String' ),
author: Ember.attr( 'String' ),
status: App.BookStatus
});
Run Code Online (Sandbox Code Playgroud)
并App.Book.Status作为具有3个可能值的枚举"FREE", "BORROW", "LOST"并使用它:
var myBook = App.Book.create({
title:'myBook',
author:'fred',
status: App.BookStatus.FREE
})
Run Code Online (Sandbox Code Playgroud)
我需要等同于Java Enum功能
public enum BookStatus {
FREE, BORROW, LOST
}
class Book {
BookStatus bookStatus;
}
Book bookInstance = new Book();
bookInstance.bookStatus=BookStatus.LOST;
Run Code Online (Sandbox Code Playgroud) this.store.findAll('game').then(function(results){
// RUN SOME OPERATION ON THEM
})
Run Code Online (Sandbox Code Playgroud)
我想知道如何使用结果变量.我明白我能做到
results.get('firstObject') // returns the first object.
Run Code Online (Sandbox Code Playgroud)
我想知道我能用它做的一切.是否有结果集合的api文档?
谢谢!
我有这个控制器从服务器获取数据我必须触发fetchPosts方法并添加新的火灾后add
App.PostsController = Ember.ArrayController.extend({
actions: {
fetchPosts: function (id) {
var data = App.Post.find({category: id});
this.set('model', data);
},
add: function () {
var post = this.get('newPost');
post.save().then(function () {
this.pushObject(post);
});
}
});
Run Code Online (Sandbox Code Playgroud)
问题是记录正在添加到列表的底部.我希望它像本机js一样工作,unshift但现在它的工作方式就像push.寻找类似于unshiftObject使添加的对象成为数组中的第一个对象的东西.
ember-model ×10
ember.js ×10
ember-data ×3
ember-1 ×1
ember-cli ×1
ember-router ×1
ember-table ×1
javascript ×1