2012-03-06 2 views
1

Возможно ли динамическое создание привязки? Скажем, у меня есть объект с именем «App.obj» с 2 свойства «альфа» и «бета», и я хочу использовать его с той же точки зрения в 2-х местах:Динамическое создание привязок при создании объекта - возможно?

{{view App.AView name="alpha"}} 

и

{{view App.AView name="beta"}} 

Представление предназначено для привязки к свойствам «альфа» или «бета» App.obj в зависимости от того, для чего установлено его свойство имени, например, когда свойство bound-to изменяется, так же как и представление. Таким образом, весь смысл упражнения заключается в том, что, учитывая два очень похожих свойства объекта, могу ли я создать только один вид, который будет привязан к любому из них, и обновить себя, когда это свойство изменится.

Возможно ли, чтобы объект вида связывался с альфа-или бета-версией на App.obj динамически на основе того, что передается ему с именем «name» во время создания?

Благодаря

ответ

2

Почему вы не просто делать {{view App.AView name="alpha" objBinding="App.obj"}}, а затем в своем определении App.AView:

App.AView = Ember.View.extend({ 

didInsertElement: function() { 
    var name = this.get('name'); 
    var objAlpha = this.getPath('obj.alpha'); 
    var objBeta = this.getPath('obj.beta'); 

    if(name == 'alpha') { 
     console.log(objAlpha); 
    } else if (name == 'beta') { 
     console.log(objBeta); 
    } 
} 
}); 

У меня есть полный пример в this jsFiddle. Просто посмотрите на свою консоль.

+0

Ну, дело в том, что если представление должно привязываться к альфа-или бета-свойствам объекта, поэтому, когда это изменится, так же и представление. Это будет просто использовать значение свойства, как это было при создании представления, не так ли? Я должен прояснить это в исходном вопросе ... –

+1

Итак, у вас есть объект 'App.obj' с свойствами' .alpha' и '.beta', и вы хотите иметь' App.getPath ('obj.alpha') 'для привязки к представлению, определенному как' {{view App.AView name = "alpha"}} '? Итак, 'App.getPath ('obj.alpha')' вернет вышеупомянутый экземпляр Ember.View? Если это так, у меня возникнут некоторые важные вопросы о вашем дизайне ... В ваших разъяснениях вы можете уточнить, какую именно проблему вы пытаетесь решить? Пример кода очень поможет. Вилка jsFiddle у меня выше и измените ее, чтобы продемонстрировать все проблемы, которые у вас есть. Я буду более чем счастлив взглянуть :) –

+0

Я просто нажал ctrl-r вместо ctrl-s в jsfiddle и потерял всю свою работу. Я не могу потрудиться, чтобы переделать его прямо сейчас, поэтому я просто собираюсь добавить каждое свойство объекта в список зависимостей от вычисленного свойства представления, следовательно, решая мою проблему - как сделать 1 представление, которое выглядит точно тот же, но выполняет другое свойство объекта, основанное на настраиваемом параметре. –

Смежные вопросы