将银光嵌入durandal

时间:2014-03-21 19:07:40

标签: silverlight durandal

我需要在我的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的全局函数。

我的模块中有没有办法定义和覆盖这些全局函数?

2 个答案:

答案 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}; };