我已经创建了一个沙箱,其中包含对数据和状态绑定UI组件的演示:http://dojo-sandbox.net/public/51073/1
我计划从页面定义生成代码,创建一个模板化的页面级小部件。这个小部件将有自己的范围,模型和状态将驻留在其中,我试图通过Page对象在沙箱中进行模拟。
沙箱正在运行,因为Page对象处于全局状态,这似乎是mvc绑定中对象解析的默认上下文。
然而,计划是让一个视图小部件支持每个页面,其中Model和State都包含在小部件的范围内。生成的视图模板将绑定到模型和状态。我可以通过'target'属性建立源代码,但是当同一个UI组件必须绑定到两个不同的模型时,一个用于值,一个用于状态,单个源不支持这个。
模型数据将从后端传递给我,一旦Model数据出现,State数据就会通过State.Execute方法派生。
我已经看过at()的'rel:'参数,但是没有看到如何在特定的上下文中利用这种语法,即我的视图小部件的范围。它似乎适用于默认的全局范围。
是否有一种标准方法可以在一个源上引导data-dojo-props值绑定,在另一个源上引用属性的data-mvc-bindings?或者更确切地说,什么是at('rel:')语法,它将支持指定关系的上下文,而不依赖于窗口小部件的“目标”或包含窗口小部件?
如果无法在此级别指定'target',我将在Execute方法中生成更多逻辑,以在状态编译期间专门设置组件上的html属性。
答案 0 :(得分:1)
data-mvc-bindings
用于允许非小部件使用dojox / mvc / at。如果为元素data-dojo-props
声明了一个小部件,则使用该小部件。
如果通过target
或data-dojo-props
指定了data-mvc-bindings
,则最终会将其设置为widget.target
。 ”rel:”
语法在DOM树中查找具有.target
的窗口小部件。
这意味着一个“组”不能有多个“相对绑定目标”,以防它是您的一个问题。您可以拥有一个“范围对象”,其中包含指向多个模型的指针并将其用作“相对约束力目标”,可能有类似的目的:
<div data-dojo-type="dijit/_WidgetBase"
data-dojo-props="target: {model0: model0, model1: model1}">
<input type="text"
data-dojo-type="dijit/form/TextBox"
data-dojo-props="value: at('rel:model0', 'value'),
disabled: at('rel:model1', 'disabled')" />
</div>
可以在http://jsfiddle.net/asudoh/M3bRC/找到一个工作示例。希望这些帮助。
最好, - Akira