kurojneko
@kurojneko

Как в emberjs получить связанный объект, или цепочку?

Здравствуйте. Изучаю Эмбер. Уткнулся в странную вещь, как можно получить связанный объект?
И другой вопрос, как редактировать связи между объектами...

App.Object = DS.Model.extend({
  children: DS.hasMany('object', {async: true, inverse: 'parent'}),
  parent: DS.belongsTo('object', {async: true, inverse: 'children'}),
});

App.ChildNodeComponent = Ember.Component.extend({
  drop: function(event) {
    var target = this.get('node'); // объект в который переместили
    var obj = App.DragerObj;
    // как узнать, не является ли target, дочерним объектом obj?
  },
  dragStart(event) {
    App.DragerObj = this.get('node'); // сохраняем перемещаемый объект
  },
});
  • Вопрос задан
  • 119 просмотров
Пригласить эксперта
Ответы на вопрос 1
kurojneko
@kurojneko Автор вопроса
Получилось манипулировать связями, вроде все автоматом проставляется.
App.Object = DS.Model.extend({
  children: DS.hasMany('object', {async: true, inverse: 'parent'}),
  parent: DS.belongsTo('object', {async: true, inverse: 'children'}),
  find_parents: function(elem){
    var in_parent = false;
    parent = this.get('parent').content
    in_parent = parent === elem;
    if(!in_parent && parent.get('parent').content){
      in_parent = parent.find_parents(elem);
    }
    return in_parent;
  },
});
var move_node = function(options){
    var target = options.target;
    var element = options.element;
    // не является собой, не является потомком себя
    if(element != target && !target.find_parents(element)){
      var children = target.get('children');
      children.pushObject(element);
///////////////////////////////////////////////////////
 ИЛИ 
      element.set('parent', target);

      element.save();
    }
};

App.ChildNodeComponent = Ember.Component.extend({
  attributeBindings : [ 'draggable' ],
  draggable         : true,
  drop: function(event) {
    opt = {
        'target':this.get('node'),
        'element':App.DragerObj,
    }
    move_node(opt);
  }
})
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы