ember获取当前组件值

时间:2015-02-12 10:12:49

标签: ember.js

我有一个拖放我的应用程序中涉及的拖放布局组件。在用户按下保存时,我想在控制器中获取组件值并存储它们。 (我使用Ember CLI)并且不知道如何将组件数据输入控制器。看过像需要的东西吗?

控制器应用程序:

save: function(){
  var newName= this.store.createRecord('layout', {
    title: this.get('title')
  });

  newName.save();

  alert('saved');

  this.transitionToRoute('index');

}

组件:

 Setupgridster: function(){
    Ember.$(".gridster ul").gridster({
      widget_base_dimensions: [359, 232],
      widget_margins: [5, 5],
      helper: 'clone',
      resize: {
        enabled: true,
        max_size: [3, 3],
        min_size: [1, 1],
        stop: function (e, ui, $widget) {
          var widget_base_dimensions = this.serialize($widget)[0];
        }
      },
      serialize_params: function($w, wgd) {
          return {
            col: wgd.col,
            row: wgd.row,
            size_x: wgd.size_x,
            size_y: wgd.size_y
          };
      }
    }).data('gridster');
  }.on("didInsertElement")
});

1 个答案:

答案 0 :(得分:0)

您应该使用组件的JavaScript(位于ApplicationController,如果您使用的是Ember-CLI)来实现保存,而不是使用app/components/your-component.js。这样,组件的功能将由组件本身封装。

// app/components/your-component.js
export default Ember.Component.extend({
  actions: {
    showConfirmation: function() {
        var store = this.get('store');
        var newName = store.createRecord('layout', {
            title: this.get('title')
        });

        newName.save().then(function(newTaskSaved){
            alert('saved');        
        });            

        this.transitionToRoute('index');
    }
  }
});

在模板中,您可以传递标题和数据存储:

{{your-component title=title store=store}}