我有一个允许我传递数据部分的小部件。根据我是否将数据部分通知给该小部件的实例,我想从小部件中显示/隐藏某些内容。因此,如果为数据部分指定了某些东西,是否可以在我的小部件视图模型上检测到?
问问题
287 次
2 回答
0
小部件的视图模型的activate
方法被传递了一个settings
对象(此代码来自Durandal 示例应用程序):
ctor.prototype.activate = function(settings) {
this.settings = settings;
};
在settings
对象中,您可以检查parent
属性,该属性将为您提供小部件绑定到的节点:
<div data-bind="expander:{items:projects}"></div>
这应该使您可以访问data-part
节点上的属性。
于 2014-02-11T23:32:01.250 回答
0
您可以在小部件的事件回调中使用composition
模块的getParts
方法。attached
请参阅http://durandaljs.com/documentation/api#module/composition/method/getParts
// MyWidget viewmodel
define(['durandal/composition'], function (composition) {
var widget = function() {
var plugin = this;
plugin.showSomething = function () {
something.show();
);
// See http://durandaljs.com/documentation/Interacting-with-the-DOM
plugin.attached = function (view, parent) {
// See http://durandaljs.com/documentation/api#module/composition/method/getParts
var dataparts = composition.getParts(view);
plugin.parts = {
$partOne: $(dataparts.datapartnameone),
$partTwo: $(dataparts.datapartnametwo)
};
if (plugin.parts.$partOne) {
// An element with data-part="datapartnameone" was found in the host container
plugin.showSomething();
}
};
};
return widget;
});
// Example host container
<div data-bind="MyWidget: {}">
<span data-part="datapartnameone">My data-part</span>
</div>
于 2016-07-26T15:33:56.473 回答