我是如何在一个组件内部处理商店的?我正在尝试创建一个从商店返回结果的自动完成组件.
App.AutoCompleteComponent = Ember.Component.extend({
//-------------------------------------------
// Ember Properites
//-------------------------------------------
content: Ember.ArrayController.create(),
//-------------------------------------------
// Instance Properties
//-------------------------------------------
queryText: "",
componentItemSelected: null,
//-------------------------------------------
// Observers
//-------------------------------------------
queryTextChanged: function () {
this.updateContent(this.get("queryText"));
}.observes("queryText"),
//-------------------------------------------
// Instance Methods
//-------------------------------------------
selectItem: function (item) {
this.set("componentItemSelected", item);
},
updateContent: function (queryText) {
if (queryText.length <= 5) {
console.log('not greater than 5 chars');
return;
}
this.get("content").setObjects([]);
var items = App.Company.find();
this.get("content").setObjects(items);
}
});
Run Code Online (Sandbox Code Playgroud)
这是我的公司模特
App.Company = DS.Model.extend({
name: DS.attr('string'),
created_at: DS.attr('date'),
updated_at: DS.attr('date'),
people: DS.hasMany('person')
});
Run Code Online (Sandbox Code Playgroud)
我试过了: …
你好Ember Data World,
我一直在研究自定义适配器,试图弄清楚如何覆盖save方法.
根据我的理解,似乎你需要做这样的事情:
DS.RESTAdapter.extend({
save: function() { return this._super();}
})
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试使用以下方法调用模型对象上的保存操作时:
model.save()
Run Code Online (Sandbox Code Playgroud)
商店直接调用,而不是我的适配器自定义代码.
有没有人试图这样做?
我可以在同一个适配器中使用以下代码调用find方法
findQuery: function(store, type, query) {
//debugger;
console.log("findQuery: Custom adapter called!");
return this.ajax(this.buildURL(type.typeKey), 'GET', { data: query });
}
Run Code Online (Sandbox Code Playgroud) 我一直在使用Ember Data,我正在尝试理解一些概念.我有一个非常繁重的数据密集型应用程序,我的后端有端点返回大量记录.
所以,基本上我有Route的东西this.store.findAll('places')
可以返回数以千计的地方,每个地方有几个文本密集的字段,如services
或description
.这只是其中一项资源,还有一些资源可以处理这些数据.
我主要担心的是应用程序遇到某种限制或变得没有响应.所以我的问题是:Ember Data如何管理大量记录?有没有最好的做法来处理这种情况?
所以,我有点新鲜,Ember.js
自从我坚持这个以来已经有几个小时了.我正在玩这个bloggr客户端,我想要完成的是handlebars
从外部文件加载这些模板.
当用户单击面板中的about页面时,应该呈现"about"模板.这里是简短的代码,所以你不必挖掘那么多(我相信对于有经验的用户来说这很容易)
里面的模板.html
如示例中所示
<script type="text/x-handlebars" id="about">
<div class='about'>
<p>Some text to be shown when users click ABOUT.</p>
</div>
Run Code Online (Sandbox Code Playgroud)
现在我所做的就是将x-handlebar
代码从html
页面中取出并放置(没有<script type...>
),然后将其放入hbs/about.hbs
现在,在html页面中我做了类似的事情.
$.ajax({
url: 'hbs/about.hbs',
async: false,
success: function (resp) {
App.About = Ember.View.extend({
template: Ember.Handlebars.compile(resp),
});
}
});
Run Code Online (Sandbox Code Playgroud)
ajax的结果保存.hbs页面的内容,然后我必须编译它Ember
才能呈现它,对吧?认为这就是我所做的.但就我而言,这就是我的意思.我做得对吗?下一步是什么?我相信我必须将ajax调用的内容附加到body
左右.
提前谢谢,搜索完SO后我仍然无法让它运行.
我是新手,我正在构建一个非常简单的应用程序.我可以通过点击链接到标签生成的链接,从我的育种者索引页面(/育种者)导航到我的育种者展示页面(/ breeders /:breeder_id).但是,如果我手动导航到breeders/1或任何其他breeders.show路由,我会收到以下错误:
Error while loading route: ReferenceError: params is not defined
at Catapp.BreedersShowRoute.Ember.Route.extend.model
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚我做了什么导致了这一点.
这就是我认为的相关代码:
//router.js
Catapp.Router.map(function() {
this.resource('breeders', function() {
this.route('new');
this.route('show', {path: '/:breeder_id'});
});
});
Catapp.IndexRoute = Ember.Route.extend({
redirect: function(){
this.transitionTo('breeders.index');
}
});
Catapp.BreedersIndexRoute = Ember.Route.extend({
model: function(){
return this.store.find('breeder');
}
});
Catapp.BreedersShowRoute = Ember.Route.extend({
model: function(){
return this.store.find('breeder', params.breeder_id);
}
});
Run Code Online (Sandbox Code Playgroud)
.
// breeders_controller.js
Catapp.BreedersController = Ember.ArrayController.extend({
sortProperties: ['id']
});
Run Code Online (Sandbox Code Playgroud) 有人知道设置UnderlyingCriteria
何时使用的方法Session.Query
?
我正在尝试为一个特定查询设置更严格的命令超时(或查询超时),我试图避免在会话中的连接或其他查询上添加该约束.
我发现在旧QueryOver
功能中你可以使用这样的东西
// QueryOver returns a IQueryOver<T,T> an nHibernate class
// with access to UnderlyingCriteria
var query = Session.QueryOver<Puppy>();
query.UnderlyingCriteria.SetTimeout(120);
Run Code Online (Sandbox Code Playgroud)
问题在于它是旧的,有缺陷的,只是有一大堆功能问题.
使用Query
返回IQueryable<T>
var query = (from c in Session.Query<Puppy>());
Run Code Online (Sandbox Code Playgroud)
IQueryable
是一个MS类,没有明显的命令超时访问权限等.
另一种选择是以某种方式为所有命令设置会话命令超时,此时,然后恢复为默认值,但我没有看到任何公共机制来执行此操作,除了先设置命令超时并将其保留,比较如何为NHibernate LINQ语句设置超时
我有一组ember对象,它们共享一个共同的属性,如"group"
var first = {name: 'first', group: 'A'}
var middle = {name: 'middle', group: 'B'}
var last = {name: 'last', group: 'A'}
{{#each person in controller}}
{{person.name}}
{{/each}}
Run Code Online (Sandbox Code Playgroud)
如何为每个组仅将组名称显示为"标题"一次?我正在做类似下面的事情(创建一个带有组键的自定义"对象"和值的"自定义数组" - 但问题是我不能有嵌套的计算属性所以这似乎不太理想长期)
groupby: function(content) {
var all = Ember.A([]);
content.map(function(apt) {
var employee = apt.get('employee').get('name');
var match = all.filter(function(group) {
if (group.name === employee) {
return group;
}
});
if (match.length > 0) {
match[0].appointments.pushObject(apt);
}else{
var group = Ember.Object.create({'name': employee, appointments: [apt]});
all.pushObject(group);
}
});
return all;
}.property()
Run Code Online (Sandbox Code Playgroud) 我试图让我的头围绕broccoli.js,但我遇到了一个错误.如果你查看我的GitHub仓库,你会看到我有一个看起来像这样的brocfile.js:
brocfile.js
var compileES6 = require('broccoli-es6-concatenator')
var pickFiles = require('broccoli-static-compiler');
var mergeTrees = require('broccoli-merge-trees')
var app = 'app'
app = pickFiles(app,{
srcDir: '/',
destDir: 'app-kit'
})
var appJS = compileES6(app, {
inputFiles: ['/app-kit/**/*.js'],
outputFile: '/dist/app.js'
})
module.exports = mergeTrees([appJS]);
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
Built with error:
Error: ENOENT, no such file or directory 'tmp/static_compiler-tmp_dest_dir-JjclDVEm.tmp/undefined'
at Object.fs.statSync (fs.js:684:18)
at addLegacyFile (/Users/cully/Sites/ember-todo/node_modules/broccoli-es6-concatenator/index.js:130:44)
at /Users/cully/Sites/ember-todo/node_modules/broccoli-es6-concatenator/index.js:47:5
at invokeCallback (/Users/cully/Sites/ember-todo/node_modules/broccoli/node_modules/rsvp/dist/commonjs/rsvp/promise.js:228:21)
at publish (/Users/cully/Sites/ember-todo/node_modules/broccoli/node_modules/rsvp/dist/commonjs/rsvp/promise.js:176:9)
at publishFulfillment (/Users/cully/Sites/ember-todo/node_modules/broccoli/node_modules/rsvp/dist/commonjs/rsvp/promise.js:312:5)
at flush (/Users/cully/Sites/ember-todo/node_modules/broccoli/node_modules/rsvp/dist/commonjs/rsvp/asap.js:41:9)
at process._tickCallback (node.js:415:13)
at Function.Module.runMain …
Run Code Online (Sandbox Code Playgroud) 我有一个帮助方法,将数字映射到文本 -
Ember.Handlebars.helper('getStatusText', function (value, options) {
switch(value) {
case 1: return "Fresh";
break;
case 2: return "Callback";
break;
default: return "Unable to get Status";
}
});
Run Code Online (Sandbox Code Playgroud)
我可以通过使用在视图中使用帮助器 {{getStatusText 1}}
但是如何在ObjectController内的动作中使用帮助器呢?
Test.DealController = Ember.ObjectController.extend({
selectedStatusType: null,
statusList: ["Fresh","Callback"],
actions: {
updateStatus: function(deal) {
// How do I call the handlebars helper here ?
console.log({{getStatusText 1}});
}
},
});
Run Code Online (Sandbox Code Playgroud)
这显然不起作用.
还有什么其他方法?
为了更好地理解,这里是jsbin
有趣的问题,我正在传递int
in并且它抱怨它不匹配类型:
org.springframework.dao.InvalidDataAccessApiUsageException: Parameter value [0] did not match expected type [java.lang.Integer]
@Procedure(procedureName = "dbo.do_cool_stuff_to_client")
void coolClientStuff(int clientId);
Run Code Online (Sandbox Code Playgroud)
它被称为如此:
public void someOtherMethod(int clientId){
clientRepository.coolClientStuff(clientId);
}
Run Code Online (Sandbox Code Playgroud) ember.js ×7
javascript ×5
ember-data ×3
ajax ×1
c# ×1
function ×1
hql ×1
java ×1
jpa ×1
linq ×1
nhibernate ×1
node.js ×1
npm ×1
spring ×1
timeout ×1