小编brg*_*brg的帖子

emberjs控制器的需求返回undefined并且无法访问controller.content

我试图使用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)

ember.js

4
推荐指数
1
解决办法
3155
查看次数

emberjs-2.0在点击时动态添加更多组件

我有一个名为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

ember.js ember-components

4
推荐指数
1
解决办法
1672
查看次数

Emberjs使用sortProperties按日期对内容进行排序

我试图使用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)

javascript ember.js ember-data

3
推荐指数
1
解决办法
4124
查看次数

为mongoid哈希字段设置默认哈希键

我有一个带有哈希字段的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.newb.smtp时,我希望它能够列出子类的所有默认键,但它没有,因为我已经覆盖了子类中的哈希字段.

 class Sport::Football < Sport
    field :rules, type: Hash, default: {:offside => '', :penalty => ''}
 end
Run Code Online (Sandbox Code Playgroud)

有没有办法为子类设置默认哈希键而不覆盖字段定义.可以通过覆盖每个子类中哈希字段的setter和getter来做到这一点.

ruby-on-rails mongodb mongoid ruby-on-rails-4 mongoid4

3
推荐指数
1
解决办法
2128
查看次数

ember-2.0角支架组件不与ember-cli@0.2.7一起使用

为了使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)

ember.js ember-cli ember-components htmlbars

3
推荐指数
1
解决办法
810
查看次数

对于#<Class:0x17a6408> -rails-3,未定义的方法`to_key'

在多态上传的表单上,我遇到了未定义的方法`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)

methods undefined ruby-on-rails-3

2
推荐指数
1
解决办法
1万
查看次数

使用emberjs didInsertElement显示两个单独的日历或两个实例jquery fullcalendar插件对象

我有一个使用jquery fullcalendar和emberjs显示的日历对象.但是,我需要显示一个单独的第二个日历或另一个jquery fullcalendar实例,但第二个日历到目前为止无法显示.这是小提琴显示它:http://jsfiddle.net/uUWqf/4/.您将在小提琴中看到我尝试两次调用didInsertElement:function(){},但它仍然只显示一个日历.但是,当我使用没有emberjs的jquery fullcalendar时,会显示两个单独的日历:http://jsfiddle.net/CH4qa/2/.

有没有办法让这个工作.

谢谢你的帮助.

jquery fullcalendar ember.js

2
推荐指数
1
解决办法
495
查看次数

Emberjs形成,提交函数和动作助手错误

http://jsfiddle.net/ACzaJ/7/ 这个小提琴有以下问题:

  1. 当您单击:"清除完成按钮"时,您将收到错误:

    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)
  2. 我正在尝试两种不同的提交功能,每次评论一次以尝试另一种:

    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上运行emberjs1.0-pre表单返回"错误":"请使用POST请求"

ember.js

2
推荐指数
1
解决办法
1398
查看次数

emberjs new-router-V3/controller无法使用ember-data创建或编辑记录

在这个jsfiddle中,我有EmBlog.PostsNewRouteEmBlog.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)

谢谢

ember.js ember-data ember-router

2
推荐指数
1
解决办法
654
查看次数

elasticsearch 5 - 如何查询对象数据类型和嵌套的json数组

我想查询已加载到 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

2
推荐指数
1
解决办法
1万
查看次数

Emberjs-1.0.0-rc.6单击以动态添加更多或多个输入字段

我想创建一个表单,用户可以单击按钮添加其他输入字段.我创建了一个partialy在这里工作jsfidle并在整个代码的jsfiddle是pased如下:

我有3个问题:

  1. 这会添加一个文本字段但不使用ember绑定$("#addField").append('
    ')
    .当我尝试依赖于把手的版本时,我的意思是:**$("#addField").append('{{textArea value = name}}
    '),而不是输出为**textArea,我得到只是{{textArea value = name}}

  2. 由于添加的字段基本上与表单中的字段相同,因此我如何确保输入的字段与该字段不同.在附件中因为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)

forms jquery handlebars.js ember.js

1
推荐指数
1
解决办法
1587
查看次数