检测数据存储中记录的更改

detect changes on records in datastore

本文关键字:记录 数据 存储 检测      更新时间:2023-09-26

我在模板视图中嵌入了一个大的svg。所有svg元素的id都对应于sproutcore数据存储中记录的guid。现在我有一个'选定'布尔属性的每条记录。

我想调整记录的相应svg元素,每当'selected'属性在True和False之间切换。视图应该反映对记录所选属性的更改。

我不知道如何设置绑定/观察来做到这一点。如果我用sc为每个记录自己构建svg,我知道如何设置绑定。但我不知道如何构建绑定,当你已经有一个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。手把的例子:

<?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...

我自己给对象添加观察者。

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

节点是一条记录。现在我手动添加一个观察者在选中的属性上执行'update_node_selected'函数。它获取一个目标参数也就是对象在我的例子中是一个记录