在Ember中是否有办法为特定模型配置自定义REST URL?
与此型号一样:
App.Post = DS.Model.extend({
title: DS.attr('string'),
comments: DS.hasMany('App.Comment')
});
App.Comment = DS.Model.extend({
content: DS.attr('string'),
post: DS.belongsTo('App.Post')
});
Run Code Online (Sandbox Code Playgroud)
而这个商店:
app.Store = DS.Store.extend({
revision : 11,
adapter : DS.RESTAdapter.extend({
namespace : 'rest'
})
});
Run Code Online (Sandbox Code Playgroud)
我希望通过/rest/post/{id}/comments而不是/rest/comments默认行为来检索注释.
是否可以为一个特定模型配置rest-url?
我试图用Emberjs和ember-data将一条新记录发布到Rails db中; 但是我收到以下错误:
TypeError {}"无法调用方法'hasOwnProperty'未定义"
我一直在关注https://github.com/dgeb/ember_data_example的示例,并尝试使用与示例相同的概念构建我自己的应用程序.更何况,我使用过调试器; 在我的控制器中,当我在控制台中点击this.get('preLoadedData')时,它设法将我的输入提取到表单中.但是,问题是我无法将用户输入POST到Rails DB中.
代码是:
DS.RESTAdapter.configure("plurals", {"company_category": "company_categories"});
App.Adapter = DS.RESTAdapter.extend({
bulkCommit: false
});
App.Store = DS.Store.extend({
revision: 12,
adapter: DS.RESTAdapter.create()
});
Run Code Online (Sandbox Code Playgroud)
App.CompanyCategory = DS.Model.extend({
category: DS.attr("string")
});
Run Code Online (Sandbox Code Playgroud)
App.CompanyCategoriesNewController = Em.ObjectController.extend({
startEditing: function() {
this.transaction = this.get('store').transaction();
this.set('model', this.transaction.createRecord(App.CompanyCategory, {}));
},
save: function() {
this.transaction.commit();
this.transaction = null;
}
});
Run Code Online (Sandbox Code Playgroud)
在rails控制器下: -
def create
@category = CompanyCategory.new(params[:id])
respond_to do |format|
if @category.save
format.json { render json: @category, status: …Run Code Online (Sandbox Code Playgroud) 我正在使用Ember App Kit.我有一个带有学生姓名的表单,我可以毫无问题地将数据保存到数据库中.问题是,每当我http://localhost:8000/#/students/new从另一个页面转换回此路径()时,数据(学生姓名)就会保留在表单上.如果我刷新屏幕,那么数据将被清除,我将获得一个新的表格.我究竟做错了什么?
此外,如果我决定不保存或添加记录并去查看学生列表,我会在屏幕上看到一个空记录.但该记录不在数据库中.我怎么能防止这种情况?
//--------------------------------------------
// Controller
var StudentsNewController = Ember.ObjectController.extend({
init: function() {
var newSystem = this.store.createRecord('student');
this.set('newStudent', newStudent);
this._super();
},
actions: {
acceptChanges: function () {
var self = this;
self.get('newStudent').save().then(function(student){
self.transitionToRoute('students');
});
}
}
});
export default StudentsNewController;
//--------------------------------------------
// Model
var Student = DS.Model.extend({
name: DS.attr('string'),
major: DS.belongsTo('major')
});
export default Student;
//--------------------------------------------
// Template
<form {{action 'updateSystem' on="submit"}}>
<fieldset>
<div>
<label>Student Name</label>
{{input value=newStudent.name size="50"}}
</div>
<button {{action 'acceptChanges'}}>Add</button>
</fieldset>
</form>
Run Code Online (Sandbox Code Playgroud) 我真的希望来自emberjs团队的人能够读到这一点.
我是一位经验丰富的程序员,使用多种语言.
&AFA ember关注的是,它不是学习曲线,也不是缺乏知识和教程,而是我认为它的框架和开发环境的来源不断变化,消耗了大量的时间,精力和精力,试图当各种SO问题和谷歌引用框架的不同/旧版本时,弄清楚出了什么问题.
我发现需要某种配置图表,其中包含什么以及如何配置您的开发环境是必要的.
有很多答案并不一定指向正确的方向,很难描述,但我觉得文档在框架向前运行时落后了.
我浏览了所有JoséMota的精彩教程,在构建实际书签应用程序的最后阶段,我遇到了很多问题,学习emberjs不是主要问题,而是大部分时间消耗的基础设施.
它从ruby版本开始,在ubuntu 12.04上管理这些,ruby的ember-data依赖项(仅用ruby 1.9编译),localstorage_adapter.js以及如何在ember中使用它... github页面上给出的示例不起作用.
配置:
ubuntu 12.04.4 ember 1.4.1 + pre.af87bd20 jquery-1.9.1 handlebars-v1.3.0 ember-data 1.0.0-beta.7.f87cba88 ruby 1.9.2p290
继何塞·莫塔的伟大tutsplus当然 因此,这里是我的问题:
Error while loading route: TypeError: undefined is not a function
at App.BookmarksNewRoute.Ember.Route.extend.model (http://localhost:8000/js/app/routes/bookmarks_new.js:3:23)
at superWrapper [as model] (http://localhost:8000/js/vendor/ember.js:1239:16)
Run Code Online (Sandbox Code Playgroud)
应用程序代码(我会尽量明确):
路线
filename:bookmarks_new.js
App.BookmarksNewRoute = Ember.Route.extend({
model: function() {
return App.Bookmark.createRecord();
}
Run Code Online (Sandbox Code Playgroud)
})
楷模
filename:bookmark.js
App.Bookmark = DS.Model.extend({
title: DS.attr("string"),
url: DS.attr("string")
Run Code Online (Sandbox Code Playgroud)
})
filename:router.js
App.Router.map(function () {
this.resource("bookmarks", function(){ …Run Code Online (Sandbox Code Playgroud) 我正在使用路由器和控制器,我需要在控制器上完成一些操作,这是我的模型代码
AcornsTest.StockRoute = Ember.Route.extend({
model: function(params) {
"use strict";
var url_params = params.slug.split('|'),
url = AcornsTest.Config.quandl.URL + '/' + url_params[0] + '/' + url_params[1] + '.json',
stockInStore = this.store.getById('stock', url_params[1]),
today = new Date(),
yearAgo = new Date(),
self = this;
yearAgo.setFullYear(today.getFullYear() - 1);
today = today.getFullYear()+'-'+today.getMonth()+'-'+today.getDate();
yearAgo = yearAgo.getFullYear()+'-'+yearAgo.getMonth()+'-'+yearAgo.getDate();
if(stockInStore && stockInStore.get('data').length) {
return stockInStore;
}
return Ember.$.getJSON(url,{ trim_start: yearAgo, trim_end: today, auth_token: AcornsTest.Config.quandl.APIKEY })
.then(function(data) {
if(stockInStore) {
return stockInStore.set('data', data.data);
} else {
return self.store.createRecord('stock', {
id: …Run Code Online (Sandbox Code Playgroud) 在哪里/如何调整Ember.Inflector类/创建一个ember-cli拾取它的实例?
谢谢!
我想在我现有的ember 1.6.x应用程序的每个页面上创建类似管理子应用程序的东西.它将拥有自己的状态机(路由器),允许它根据自己的状态加载不同的控制器/模板.我已经看到很多类似的讨论围绕着拥有多个状态机(路由器)或广泛使用子路由,但没有什么真正打击了头部.
有没有一种明确的方法可以在同一页面上创建两个有效的应用程序?
子应用程序不需要实际拥有在url栏中解释的路由.当父应用程序更改路由/状态时,它也不需要保持状态.每次父应用程序更改为其他路由时,都可以重置它.我想避免的是在父应用程序的多个控制器中反复重复相同的代码.我还想避免污染应用程序或全局级别.
以下是我研究过的讨论列表.我能找到的最接近的事情是有关ember流程的工作(尚未完成).或者,我是否应该通过子应用程序的ember-states插件来创建一个新的状态机?
要明确我不是在找人为我编写代码.只讨论如何使用ember 1.6.x来完成它,因为它目前是可用的.
http://discuss.emberjs.com/t/route-less-substates/2269
http://discuss.emberjs.com/t/is-there-a-reason-we-can-not-have-nested-routes/1845
向Ember.StateManager发送动作:goToState是强制性的吗?
https://github.com/emberjs/ember.js/issues/406
https://github.com/emberjs/ember.js/issues/4767
http://discuss.emberjs.com/t/concurrent-states-in-ember/5042
https://github.com/nathanhammond/ember-flows-generator
https://github.com/emberjs/ember.js/issues/406#issuecomment-3702356
使用Ember v1.8 beta 3+和Ember Data 1.0 beta 10-您会收到此错误:
Error while processing route: index Cannot read property 'async' of undefined TypeError: Cannot read property 'async' of undefined
at Relationship [as _super$constructor] (http://builds.emberjs.com/canary/ember-data.js:9523:46)
at new BelongsToRelationship (http://builds.emberjs.com/canary/ember-data.js:9736:12)
at createRelationshipFor (http://builds.emberjs.com/canary/ember-data.js:9840:16)
at http://builds.emberjs.com/canary/ember-data.js:6366:41
at http://builds.emberjs.com/canary/ember-data.js:9307:20
at cb (http://builds.emberjs.com/ember-latest.js:15907:13)
at OrderedSet.forEach (http://builds.emberjs.com/ember-latest.js:15703:13)
at Map.forEach (http://builds.emberjs.com/ember-latest.js:15911:19)
at Function.Model.reopenClass.eachRelationship (http://builds.emberjs.com/canary/ember-data.js:9306:42)
at Ember.Object.extend._setup (http://builds.emberjs.com/canary/ember-data.js:6365:26)
Run Code Online (Sandbox Code Playgroud)
尽管您的模型设置正确:
App.Color = DS.Model.extend({
color: DS.attr(),
foo: DS.belongsTo('foo', {async:true})
});
App.Foo = DS.Model.extend({
foo: DS.attr()
});
Run Code Online (Sandbox Code Playgroud)
我有这个productsCount计算属性应该计数所有,products但它总是返回0.为什么这样,我该如何解决它?
controller.js
productsCount: Ember.computed('model.products', function() {
var products = this.get('model.products');
return products.get('length');
}),
Run Code Online (Sandbox Code Playgroud)
route.js
import Ember from 'ember';
export default Ember.Route.extend({
model: function() {
return {
products: this.store.find('product')
};
}
});
Run Code Online (Sandbox Code Playgroud) 我正在尝试构建一个简单的Ember应用程序,它从表单中收集信息.我正在使用本教程作为指南.在本教程中,它具有以下代码以从表单中获取信息:
export default Ember.Component.extend({
...
actions: {
saveRental1() {
var params = {
owner: this.get('owner'),
city: this.get('city'),
type: this.get('type'),
image: this.get('image'),
bedrooms: this.get('bedrooms'),
};
...
this.sendAction('saveRental2', params);
}
}
});
Run Code Online (Sandbox Code Playgroud)
这里有一些相关的表单代码:
<div class="form-group">
<label for="image">Image URL</label>
{{input value=image id="image"}}
</div>
<button {{action 'saveRental1'}}>Save</button>
</form>
Run Code Online (Sandbox Code Playgroud)
在我的解决方案中,我无法让它发挥作用.this.get('whatever')总是在我的代码中显示为'undefined'.经过一些调试后,我找到了一个解决方案,但这意味着我将代码更改this.get('city')为this.controller.get('city')
有人可以解释我做错了什么或为什么?使用this.controller是"标准"吗?
ember-data ×10
ember.js ×10
javascript ×4
dictionary ×1
ember-cli ×1
ember-rails ×1
forms ×1
rest ×1
ruby ×1
ubuntu-12.04 ×1
url-routing ×1