我需要在我的durandal应用程序中嵌入一个silverlight excel组件。
我的HTML看起来像:
<form id="silverlightControl" runat="server" data-bind="if: silverlightIsInstalled() && silverlightData()!=null">
<div id="silverlightControlHost">
<object id="silverlightObject" data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%">
<param name="source" value="ClientBin/SilverlightGrid.xap" />
<param name="onError" value="onSilverlightError" />
<param name="onLoad" value="onSilverlightLoad" />
<param name="background" value="white" />
<param name="minRuntimeVersion" value="5.0.61118.0" />
<param name="autoUpgrade" value="false" />
</object><iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe>
</div>
</form>
问题是这会尝试调用名为onSilverlightLoad和onSilverlightError的全局函数。
我的模块中有没有办法定义和覆盖这些全局函数?
答案 0 :(得分:2)
是的,你可以这样做......我的模块中是否有一种方法可以定义和覆盖它们 全球职能?
在全球范围内:
var currentModule = null;
function onSilverlightLoad(sender, args) {
if (currentModule && currentModule.onSilverlightLoad) {
// forward the event to the current module
currentModule.onSilverlightLoad(sender, args);
return;
}
// fallback logic...
}
function onSilverlightError(sender, args) {
if (currentModule && currentModule.onSilverlightError) {
// forward the event to the current module...
currentModule.onSilverlightError(sender, args);
return;
}
// fallback logic...
}
在你的模块中:
window.currentModule = this;
// todo: define public function properties named onSilverlightLoad and onSilverlightError
答案 1 :(得分:0)
提示其他任何人将Silverlight嵌入Durandal应用程序。
您需要这样做,或者当您离开该页面并返回该页面时,会发生不好的事情:
vm.binding = function(){ return {cacheViews:false}; };