我试图使用Emberjs 需要api*从评论控制器访问Postscontroller.PostController由路由支持,而我不希望注释的控制器有路由.
在评论控制器中,我有需要:['posts','postsShow'].在评论控制器中,当我使用以下命令运行控制台日志时:
console.log( this.get('controllers.postsShow') );
console.log( this.get('controllers.posts') );
Run Code Online (Sandbox Code Playgroud)
在控制台中我看到:
<EmBlog.PostsShowController:ember396> { target=<EmBlog.Router:ember316>, namespace=EmBlog, store=<EmBlog.Store:ember336>
<EmBlog.PostsController:ember304> { target=<EmBlog.Router:ember316>, namespace=EmBlog, store=<EmBlog.Store:ember336>
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试访问 PostsShowController或PostsController 的控制器内容时,它总是返回post undefined.这些是我尝试过的各种方法,但仍未定义:
var post = this.get('controllers.posts').get('content');
or
var post = this.get('controllers.posts.content');
Run Code Online (Sandbox Code Playgroud)
我还尝试从这样的内容中获取"评论":
var post = this.get('controllers.posts')
var comment = post.get('comments');
or
comment = post.comments;
Run Code Online (Sandbox Code Playgroud)
我仍然得到错误:
TypeError: post is undefined comment = post.comments;
TypeError: post is undefined var comment = post.get('comments');
Run Code Online (Sandbox Code Playgroud)
这也意味着:
var post = this.get('controllers.posts.model').get('store.transaction');
also returns post is undefined. …Run Code Online (Sandbox Code Playgroud) 我有一个名为display-me的组件.我可以将相同组件的多个添加到同名模板中,如jsfiddle中所示,通过向该组件添加多个调用,如下所示:
<script type="text/x-handlebars" data-template-name="index">
{{display-me action='add'}}
{{display-me action='add'}}
</script>
Run Code Online (Sandbox Code Playgroud)
但是,我想要的是,我可以单击按钮添加组件的第二个条目,而不是像上面那样手动添加它,因为我想使用单击并添加所需数量.
我已将此操作添加到我的索引路由但它不起作用:
App.IndexRoute = Ember.Route.extend({
actions: {
add: function(){
var comp = App.__container__.lookup("component:display-me");
//var comp = App.DisplayMeComponent.create();
//comp.appendTo(".test");
//comp.appendTo('#input');
Ember.$(".test").append($('<div> {{display-me action="add"}} </div>'));
}
}
});
Run Code Online (Sandbox Code Playgroud)
这是完整的jsfiddle
我试图使用Emberjs sortProperties在这个jsfiddle中按日期对内容进行排序.我的模型有一个startTime属性,我试图排序,但它没有工作.然后我在控制器中创建了一个名为todayEvent的计算属性,该属性返回与传入日期匹配的事件,我尝试对其进行排序,但它也无效.我所要做的就是列出在同一天发生的事件,但是以chich事件中发生的一天中的时间按照升序排序,例如,在早上10点之前发生的事件 应该在下午12点之前列出.
这是jsfiddle
该模型:
App.TimeSlot = DS.Model.extend( {
startTime: DS.attr('date'),
endTime: DS.attr('date'),
allDay: DS.attr('boolean'),
soldOut: DS.attr('boolean')
});
Run Code Online (Sandbox Code Playgroud)
控制器
App.TimeSlotController = Ember.ArrayController.extend({
content: [ ],
sortProperties: ['todayEvent'],
sortAscending: true,
day: Ember.A(['2013-10-25']),
todayEvent: function(){
self = this;
u = self.get('content');
console.log('u', u);
kl = u.filter(function(availableSlot) {
console.log ('a', availableSlot.get('startTime') );
return (moment(availableSlot.get('startTime')).format("YYYY-MM-DD") == self.get('day').toString() );
});
return kl;
}.property('day', 'content@each'),
});
Run Code Online (Sandbox Code Playgroud)
fixtureAdapter
App.TimeSlot.FIXTURES = [
{
id: 3,
startTime: …Run Code Online (Sandbox Code Playgroud) 我有一个带有哈希字段的Mongoid模型.此Mongoid模型具有使用单个集合继承的子类.现在我想为主模型的每个子类设置不同的默认哈希键.
主要模型
class Sport
include Mongoid::Document
field :rules, type: Hash, default: {}
end
Run Code Online (Sandbox Code Playgroud)
我想为:rule hash字段设置不同的默认哈希键的子类.例如,对于足球我想要规则:{:offside =>'',:penalty =>''}对于拳击我们可能有规则的哈希键:{:biting =>'not allowed'}.开源应用程序Errbit使用子类中的常量来设置默认哈希键,但我可以看到他们如何使用常量来填充哈希:https://github.com/errbit/errbit/blob/master/app/车型/ issue_trackers/github_issues_tracker.rb
class Sport::Football < Sport
end
class Sport::Boxing < Sport
end
Run Code Online (Sandbox Code Playgroud)
我确实覆盖了子类中的字段定义,如下所示,它在rails控制台中有效.当我做一个= Sport :: Football.new然后调用a.smtp返回默认设置.但问题是,当我去父类并执行b = Sport.new和b.smtp时,我希望它能够列出子类的所有默认键,但它没有,因为我已经覆盖了子类中的哈希字段.
class Sport::Football < Sport
field :rules, type: Hash, default: {:offside => '', :penalty => ''}
end
Run Code Online (Sandbox Code Playgroud)
有没有办法为子类设置默认哈希键而不覆盖字段定义.可以通过覆盖每个子类中哈希字段的setter和getter来做到这一点.
为了使ember-2.0角度支架组件能够与最新的ember-cli一起使用,我还需要什么
我使用ember-cli 0.27,nodejs 0.12.4和emberjs-canary分支来测试emberjs-2.0.
我创建了一个简单的新骨架应用程序:
ember new test-app
Run Code Online (Sandbox Code Playgroud)
并创建了一个组件:
ember g component my-test
Run Code Online (Sandbox Code Playgroud)
在application.hbs中,如果我添加以下行来调用组件,则不会显示组件中的内容.
<my-test />
Run Code Online (Sandbox Code Playgroud)
如果将上面的行更改为下面的行,则会显示该组件的内容.
{{my-test}}
Run Code Online (Sandbox Code Playgroud)
这是我的bower.json的摘录
{
"name": "em",
"dependencies": {
"ember": "components/ember#canary",
"ember-data": "components/ember-data#canary",,
"ember-cli-shims": "ember-cli/ember-cli-shims#0.0.3",
"ember-cli-test-loader": "ember-cli-test-loader#0.1.3",
"ember-data": "1.0.0-beta.18",
"ember-load-initializers": "ember-cli/ember-load-initializers#0.1.4",
"ember-qunit": "0.3.3",
"ember-qunit-notifications": "0.0.7",
"ember-resolver": "~0.1.15",
"jquery": "^1.11.1",
"loader.js": "ember-cli/loader.js#3.2.0",
"qunit": "~1.17.1"
},
"resolutions": {
"ember": "canary",
"ember-data": "canary"
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的包,json
"devDependencies": {
"broccoli-asset-rev": "^2.0.2",
"ember-cli": "0.2.7",
"ember-cli-app-version": "0.3.3",
"ember-cli-babel": "^5.0.0",
"ember-cli-content-security-policy": "0.4.0",
"ember-cli-dependency-checker": "^1.0.0",
"ember-cli-htmlbars": "0.7.6",
"ember-cli-ic-ajax": "0.1.1",
"ember-cli-inject-live-reload": …Run Code Online (Sandbox Code Playgroud) 在多态上传的表单上,我遇到了未定义的方法`to_key'的问题.
这是部分形式:
<%= form_for [@parent, Upload], :html => { :multipart => true } do |f| %>
<div class="field">
<%= f.label :document %><br />
<%= f.file_field :document %>
</div>
<div class="actions">
<%= f.submit "Upload"%>
</div>
<% end %>
Run Code Online (Sandbox Code Playgroud)
这是控制器:
class UploadsController < ApplicationController
before_filter :find_parent
respond_to :html, :js
def index
@uploads = @parent.uploads.all unless @uploads.blank?
respond_with([@parent, @uploads])
end
def new
@upload = @parent.uploads.new unless @uploads.blank?
end
def show
@upload = @parent.upload.find(params[:upload_id])
end
def create
# Associate the correct MIME type for …Run Code Online (Sandbox Code Playgroud) 我有一个使用jquery fullcalendar和emberjs显示的日历对象.但是,我需要显示一个单独的第二个日历或另一个jquery fullcalendar实例,但第二个日历到目前为止无法显示.这是小提琴显示它:http://jsfiddle.net/uUWqf/4/.您将在小提琴中看到我尝试两次调用didInsertElement:function(){},但它仍然只显示一个日历.但是,当我使用没有emberjs的jquery fullcalendar时,会显示两个单独的日历:http://jsfiddle.net/CH4qa/2/.
有没有办法让这个工作.
谢谢你的帮助.
http://jsfiddle.net/ACzaJ/7/ 这个小提琴有以下问题:
当您单击:"清除完成按钮"时,您将收到错误:
Uncaught Error: assertion failed: Target <Ember.View:ember116> does not have action clearCompletedTodos
And this line generates that error:
<button {{action clearCompletedTodos target="Todos.todosController" }} >
Clear Completed Todos
</button>
Run Code Online (Sandbox Code Playgroud)我正在尝试两种不同的提交功能,每次评论一次以尝试另一种:
2A.当我点击"添加"按钮时,当通过注释掉第二个提交功能使用第一个提交功能时,不会添加任何新的待办事项并且没有错误.这没什么事.
2B.当我注释掉第一个提交功能并使用第二个提交功能时,单击添加,将引发以下错误:
Uncaught TypeError: Cannot call method 'createTodo' of null.
Run Code Online (Sandbox Code Playgroud)我怎样才能制作这个待办事项应用程序,运行并添加和清除待办事项.谢谢
UPDATE
问题1现在由@pauldechov解决.但问题2a和2b尚未解决.jsfiddle链接也已更新.谢谢@pauldechov.
更新2
彼得此后提供的解决方案存在问题,彼得在这里解决了新问题:
在这个jsfiddle中,我有EmBlog.PostsNewRoute 和EmBlog.PostsEditRoute.路由包含"保存,取消和销毁"的事件.
当我创建一个新记录时,它只在内存中创建并且从不调用store.commit(),并且在控制台中,它会抛出错误:
未捕获的TypeError:无法调用未定义的方法'commit'
当我尝试编辑时,它会抛出相同的错误,但编辑仍然只在内存中发生.
销毁行动也失败了.
当我打电话取消时,我得到:
无法读取undefined的属性'defaultTransaction'
大多数代码都在jsfiddle中.保存和取消事件遵循耶胡达描述的模式:
App.NewUserRoute = Ember.Route.extend({
model: function() {
return App.User.createRecord();
},
events: {
save: function(user) {
this.get('store').commit();
}
}
});
Run Code Online (Sandbox Code Playgroud)
谢谢
我想查询已加载到 Elasticsearch 5 中的嵌套数据,但每个查询都没有返回任何内容。数据是对象数据类型和json 嵌套数组。
这是嵌套数据类型,即 json 的 team_members 数组:
[{
"id": 6,
"name": "mike",
"priority": 1
}, {
"id": 7,
"name": "james",
"priority": 2
}]
Run Code Online (Sandbox Code Playgroud)
该对象数据类型即availability_slot json:
{
"monday": {
"on": true,
"end_time": "15",
"start_time": "9",
"end_time_unit": "pm",
"start_time_unit": "am",
"events_starts_every": 10
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的弹性搜索映射:
{
"meetings_development_20170716013030509": {
"mappings": {
"meeting": {
"properties": {
"account": {"type": "integer"},
"availability_slot": {
"properties": {
"monday": {
"properties": {
"end_time": {"type": "text"},
"end_time_unit": {"type": "text"},
"events_starts_every": {
"type":"integer"
}, …Run Code Online (Sandbox Code Playgroud) elasticsearch elasticsearch-query elasticsearch-nested elasticsearch-5
我想创建一个表单,用户可以单击按钮添加其他输入字段.我创建了一个partialy在这里工作jsfidle并在整个代码的jsfiddle是pased如下:
我有3个问题:
这会添加一个文本字段但不使用ember绑定$("#addField").append('
').当我尝试依赖于把手的版本时,我的意思是:**$("#addField").append('{{textArea value = name}}
'),而不是输出为**textArea,我得到只是{{textArea value = name}}
由于添加的字段基本上与表单中的字段相同,因此我如何确保输入的字段与该字段不同.在附件中因为textfield input和textArea标签具有value = name,所以我在textfield中输入的任何内容都将出现在textArea中.我知道这个qwill适用,即使我使用valueBinding = controller.name或if是带有valueBinding = view.name的views属性.如何通过对其唯一的单击添加每个附加输入字段的值.
jsfiddle中的整个代码
App = Ember.Application.create();
App.ApplicationView = Ember.View.extend({
templateName: 'application',
attributeBindings: ['id'],
id: "addField",
moreFields: function(){
$("#addField").append('<input type="text" value=name /><br/>');
$("#addField").append('{{textArea value=name}}<br/>');
}
});
Run Code Online (Sandbox Code Playgroud)
模板:
<script type="text/x-handlebars" data-template-name='application'>
<h1> Hello</h1>
{{input value=name}}
<br/>
{{textarea value=name}}
<br/>
{{input type=checkbox checked=isActive}}
<br/>
<button {{action 'moreFields' target='view'}}> click for more …Run Code Online (Sandbox Code Playgroud) ember.js ×8
ember-data ×2
jquery ×2
ember-cli ×1
ember-router ×1
forms ×1
fullcalendar ×1
htmlbars ×1
javascript ×1
methods ×1
mongodb ×1
mongoid ×1
mongoid4 ×1
undefined ×1