嘿,我正在浏览 emberjs 教程,但我遇到了这个无法解决的问题。当我尝试从 store 调用 findAll 函数时,它会抛出类型错误并表示 findAll 不是函数。当我使用 this.get() 方法时,它说它是一个经典的 ember 对象方法,并且不能在辛烷类中使用。有人知道如何解决这个问题吗?
在此先感谢您的时间!
应用程序/路线/rental.js
import Route from '@ember/routing/route';
export default class RentalsRoute extends Route {
model() {
return this.store.findAll('rental');
}
}
Run Code Online (Sandbox Code Playgroud)
应用程序/模型/rental.js
import Model, { attr } from '@ember-data/model';
export default class RentalModel extends Model {
@attr title;
@attr owner;
@attr city;
@attr propertyType;
@attr image;
@attr bedrooms;
@attr description;
}
Run Code Online (Sandbox Code Playgroud)
海市蜃楼/config.js
export default function () {
this.namespace = '/api';
this.get('/rentals', function () {
return {
data: [
{ …Run Code Online (Sandbox Code Playgroud) 我正在使用ember数据rev-11和django tastypie.看起来现在ember-data不支持嵌入资源但支持sideloads(django tastypie不支持它).什么是最好的解决方案?
谢谢
ember rc1,ember-data rev 12.所有其他路由正确加载,不确定为什么我看到这个错误.当我尝试访问show route即/ files/groups/5时会发生这种情况.索引路线呈现良好.
我已经粘贴了下面的堆栈跟踪,但它的信息量不大.我在这里做什么基本上是错的?
我的路线/控制器设置如下:
this.resource('files', { path : '/files' }, function() {
this.resource('groups', { path : '/groups' }, function() {
this.route('show', { path : '/:asset_link_group_id' });
});
});
AssetLinksApp.GroupsShowController = Ember.ArrayController.extend({
content : Ember.A(),
assetLinkGroup : null
});
AssetLinksApp.GroupsShowRoute = AssetLinksApp.AuthRequiredRoute.extend({
setupController : function(controller,model) {
controller.set('content',model.get('asset_links'));
controller.set('assetLinkGroup',model);
},
model : function(params) {
return AssetLinksApp.AssetLinkGroup.find(params.asset_link_group_id);
}
});
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪:
加载路由时出错:TypeError {} exchange_vendor.js:12078
(匿名函数)exchange_vendor.js:12078 Ember.Router.reopenClass.defaultFailureHandler.setup exchange_vendor.js:35011 failure exchange_vendor.js:34448 objects.concat.context exchange_vendor.js:34497 invokeCallback exchange_vendor.js:17846 Promise.then exchange_vendor. js:17893 EventTarget.trigger exchange_vendor.js:17822 results exchange_vendor.js:17924 …
即时通讯尝试使用jquery拖放,我想在我的视图中使用一些ember工具,但我不能.
App.myView = Ember.View.extend({
tagName:'li',
didInsertElement:function(){
this.$().draggable({
start:function(event,ui){
console.log(this.get('tagName'));
}
});
}
});
Run Code Online (Sandbox Code Playgroud)
但我收到一个错误:
Uncaught TypeError: Object #<HTMLLIElement> has no method 'get'
Run Code Online (Sandbox Code Playgroud)
我可以在jquery部分使用doInsertElement中的get/set或其他方法吗?
我希望能够将我的Session单身注入我的Ember模型中.我试图支持的用例是在模型上计算了对用户配置文件作出反应的属性(Session对象上的属性).
App = window.App = Ember.Application.create({
ready: function() {
console.log('App ready');
this.register('session:current', App.Session, {singleton: true});
this.inject('session:current','store','store:main');
this.inject('controller','session','session:current');
this.inject('model','session','session:current');
}
});
Run Code Online (Sandbox Code Playgroud)
注射可以很好地控制到控制器,但我遇到麻烦model.这里有限制吗?任何特殊技术?
--------附加背景---------
这是我希望能够在我的model定义中做的一个例子:
App.Product = DS.Model.extend({
name: DS.attr("string"),
company: DS.attr("string"),
categories: DS.attr("raw"),
description: DS.attr("string"),
isConfigured: function() {
return this.session.currentUser.configuredProducts.contains(this.get('id'));
}.property('id')
});
Run Code Online (Sandbox Code Playgroud) 我正在尝试从服务器获取REST请求返回的对象的简单计数,以便在Ember.js中的另一个控制器中使用
出于这个原因,我需要向服务器发出一个额外的请求.基本上这是我的代码,它几乎可以工作..但还不是.也许有人可以找出原因.
它返回一个PromiseArray,这就是我.then()用来访问属性的原因.
App.TestController = Ember.ObjectController.extend({
totalCount: function() {
return this.store.find('question', {test: this.get('id')}).then(function(items) {
var count = items.get('content').get('length');
console.log(count); // This actually logs correct values
return count;
})
}.property('question')
})
Run Code Online (Sandbox Code Playgroud)
它做了它想做的事情,我在console.log()中打印出正确的值,但是当我尝试{{totalCount}}在视图模板中使用时,我得到的[object Object]不是整数.
另外,我是否正确观察了该questions物业?如果值在适当的控制器中发生变化,值会更新吗?
谢谢
不幸的是,ActiveModel :: Serializers目前不支持验证错误,尽管它们被安排为1.0.在那之前,我必须破解我自己的解决方案.大问题?我不知道Ember Data的ActiveModelAdapter期望这些错误的格式是什么.我试过简单地传递errors属性,但是Ember Data没有接受它:
class MySerializer < ActiveModel::Serializer
attributes :errors
end
Run Code Online (Sandbox Code Playgroud)
那么我该怎么办呢?
我正在努力遵循ember 2.0的文档删除记录,然后重定向到新的URL.当我尝试时,我得到以下错误到控制台:
Error while processing route: pencils Attempted to handle event `pushedData` on <name-emberjs@model:pencil::ember523:null> while in state root.deleted.inFlight. Error: Attempted to handle event `pushedData` on <name-emberjs@model:pencil::ember523:null> while in state root.deleted.inFlight.
Run Code Online (Sandbox Code Playgroud)
我的文件如下.
路线:
import Ember from 'ember';
import config from './config/environment';
var Router = Ember.Router.extend({
location: config.locationType
});
Router.map(function() {
this.resource('pencilview', { path: '/pencils/:pencil_id' });
this.resource('pencilcreate', { path: '/pencils/new' });
this.resource('pencils');
});
export default Router;
import Ember from 'ember';
import config from './config/environment';
var Router = Ember.Router.extend({
location: config.locationType …Run Code Online (Sandbox Code Playgroud) 对于“获取所有位置”,我有以下明确的路线:
router.get('/', function(req, res){
let q = req.query;
let locations = Location.find({organization: q.organization});
locations.then(r => res.status(200).send(r))
.catch(err => res.status(500).send(err));
});
Run Code Online (Sandbox Code Playgroud)
这个ember模型钩子可以正确触发它:
model(){
return this.store.findRecord("user", this.get('session.currentUser.id'))
.then(user => user.get('organization'))
.then(org => this.store.query("location", {organization: org.id}))
}
Run Code Online (Sandbox Code Playgroud)
现在,此查询正在使用参数将获取请求发送到以下URL:
GET /locations?organization=571974742ce868d575b79d6a
Run Code Online (Sandbox Code Playgroud)
我的服务器返回200成功代码,但是模型挂钩因以下错误而崩溃:
query to locations failed with error: Error: Assertion Failed: The response to store.query is expected to be an array but it was a single record. Please wrap your response in an array or use `store.queryRecord` to query for a single record.
Run Code Online (Sandbox Code Playgroud)
创建到同一地址的邮递员请求: …
我目前正在学习Ember.js并对数据库感到困惑.我想创建一个评论网站,用户可以在提交后撰写评论并查看评论.
我已经学习了如何显示官方教程中的内容的基本知识,但教程中的数据是硬编码的.如果我需要插入一条记录,我该如何实现呢?用数据库或更简单的东西?
谢谢