обнаруживать изменения в записях в хранилище данных

Я встроил большой svg в представление шаблона. Все элементы svg имеют идентификаторы, соответствующие идентификаторам записей в хранилище данных sproutcore. Теперь у меня есть «выбранное» логическое значение для каждой записи.

Я хочу настроить соответствующий элемент svg записи всякий раз, когда свойство «выбрано» переключается между True и False. Представление должно отражать изменения выбранного свойства записи.

Я не могу понять, как настроить привязки / наблюдения для этого. Если бы я сам построил svg с помощью sc для каждой записи, я знаю, как настроить привязки. Но я не знаю, как создавать привязки, когда у вас уже есть svg.

код модели:

App.Node = SC.Record.extend(
   name : SC.Record.attr(String),
   value : SC.Record.attr(String),
   selected: SC.Record.attr(Boolean),
}),

код просмотра:

App.svg_picture = SC.View.design({

  childViews: 'svgpicture'.w(),

   layout: { left:12, right:12, top:12, bottom:12},

   svgpicture: SC.TemplateView.create({
   /**
   * settings.
   */
   templateName: 'svgtest2',
   nodeBorderColorSel: '#FFB60B',
   nodeColorSel: 'yellow',

   /**
    * Event handling code.
    */
   ....

пример svg.handlebar:

<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" version="1.1" x="manifold" xmlns:xlink="http://www.w3.org/1999/xlink"  >
tank_1</text>
<circle cy="25" cx="70" r="20" id="tank_1"  strokewidth:5; fill:none; "  />

<circle cy="25" cx="120" r="20" id="tank_10" strokewidth:5; fill:none; "  />
<circle cy="25" cx="170" r="20" id="tank_11" strokewidth:5; fill:none; "  />
... etc...

person Stephan    schedule 09.09.2011    source источник
comment
как выглядит твоя запись? Это SC2 или ветка 1.x?   -  person hvgotcodes    schedule 09.09.2011
comment
1.6, хотя между ними не было большой разницы в отношении хранилища данных/наблюдателей/привязок.   -  person Stephan    schedule 09.09.2011
comment
проблема в том, что вы не можете отразить изменения в представлении в модели или что вы хотите автоматически сохранить?   -  person hvgotcodes    schedule 09.09.2011
comment
Я хочу, чтобы изменение экземпляра модели/записи отражалось в представлении.   -  person Stephan    schedule 11.09.2011


Ответы (1)


Что сработало для меня, так это добавление наблюдателей к объектам самостоятельно.

 node.addObserver('selected', this, 'update_node_selected');

узел является записью. теперь я вручную добавляю наблюдателя к выбранному свойству, выполняя для него функцию update_node_selected. который получает целевой параметр, который является объектом, а в моем случае - записью.

person Stephan    schedule 12.09.2011