从嵌套标记中更改父标记

时间:2015-02-21 11:39:02

标签: javascript riot.js

有一个递归嵌套标记:

<list>
   <div if="{ items }">
      <div each="{ items }">
         <input type="checkbox" checked="{ selected }" onclick="{ parent.select }"> {name}
         <list />
      </div>
   </div>

   var parent = this.parent
   select(e) {
     var item = e.item
     item.selected = !item.selected
     parent.selected = item.selected // does not change parent's checkbox "checked" state
     return true
   }
</list>

安装如下:

riot.mount('list', { 
  items: [
     {name: "Item 1"},
     {name: "Item 2", selected: true, items: [
        {name: "Item 2.1", selected: true, items: [
           {name: "Item 2.1.1}
        ]}
     ]}
  ] 
})

如标记代码中的注释所述 - 更改父级复选框“已检查”状态时出现问题。但“选定”财产的价值按预期变化。

是否有可能以某种方式更改父级的复选框状态或为父级标记调用“select”方法?

1 个答案:

答案 0 :(得分:1)

只有触发了eventhandler的元素才会自动更新。要更改元素外部的视图,您需要手动更新它。

parent.selected = item.selected
parent.update()