У меня есть следующий полимерный компонент (только для тестирования):
<dom-module id="visu-conveyor">
<template>
<div id='conveyor'>
{{objectName}}
<div style="width: 80px; height: 90%;">
<div style="width: 10px; height: 10px; background: blue;" data-bind="visible: B.B.Value"></div>
<span data-bind="text: $data"></span>
</div>
</div>
</template>
<script>
Polymer({
is: "visu-conveyor",
properties: {
objectName: String
},
attached: function () {
var self = this;
var dc = ko.dataFor(self);
ko.applyBindings(dc, self.$.conveyor);
}
});
</script>
</dom-module>
этот компонент может быть размещен в другом компоненте, например:
<dom-module id="visu-tag-root-canvas">
<template>
<div style="height: 100%; width: 100%" id="rootObj">
<content></content>
</div>
</template>
<script>
Polymer({
is: "visu-tag-root-canvas",
properties: {
tagRoot : String
},
ready: function () {
var self = this;
var dc = ko.dataFor(self);
if (self.tagRoot != null) {
//self.$.rootObj.setAttribute("data-bind", "with: " + self.tagRoot);
//todo -> get folder recursive
ko.applyBindings(dc[self.tagRoot], self.$.rootObj);
} else {
ko.applyBindings(dc, self.$.rootObj);
}
}
});
</script>
</dom-module>
Например, страница может выглядеть так:
<visu-tag-root-canvas>
<visu-conveyor style="width: 88px; height: 130px; top: 74px; position: absolute; left: 64px;" object-name="HH66"></visu-conveyor>
<visu-conveyor style="width: 88px; height: 130px; top: 74px; position: absolute; left: 160px;" object-name="aa31"></visu-conveyor>
<visu-tag-root-canvas tag-root="A" style="left: 284px; position: absolute; top: 255px; width: 305px; height: 216px;">
<visu-conveyor style="width: 88px; height: 130px; top: 27px; position: absolute; left: 30px;" object-name="EE77"></visu-conveyor>
<visu-conveyor style="width: 88px; height: 130px; top: 27px; position: absolute; left: 126px;" object-name="II88"></visu-conveyor>
</visu-tag-root-canvas>
</visu-tag-root-canvas>
Это означает, что 2 визуальных конвейера внутри 2-го визуального тэга-корневого холста должны быть связаны с «A.B.B», а внешние — с «BB»!
Это работает с теневым домом! Но когда я включаю Shadow Dom, все привязываются к одной и той же переменной! "ББ"
В качестве дополнения мой DataContext для привязки выглядит следующим образом:
{
A {
B {
B {
Value
}
}
}
B {
B {
Value
}
}
}