使用延迟渲染的LightSwitch重新定制自定义控件的问题

时间:2014-03-21 07:00:06

标签: javascript html visual-studio-lightswitch

我使用简单代码玩LightSwitch自定义控件:

myapp.Facility_Details.ScreenContent_render = function (element, contentItem) {
    $(element).append("<ul><li><label><input type='checkbox'/><span>Test</span></li></ul>");
}

我注意到LightSwitch在渲染HTML后重写HTML,将自己的控件样式类添加到HTML并进行一些重新组织。我想我可以忍受这个&amp;只是习惯它做了什么,但是当我添加一些AJAX混合时,我遇到了更糟糕的问题。当我在done的{​​{1}}方法中进行实际渲染时,后期处理不会发生。

EG:

Promise

完全不同的渲染(不编辑HTML)。我也可以忍受这个,但如果我浏览这个页面&amp;回到它然后它转换到第一个显示...我尝试从渲染思考返回Promise可能会让它等待我完成,但没有骰子。

有谁知道我怎么能:

a)防止这种重新处理,所以我每次都会得到我写的HTML。

b)明确触发此重新处理,以便我在Promise内部渲染后确保它发生。

2 个答案:

答案 0 :(得分:2)

这是jQuery做的工作,所以在附加它之前将其包装到jQuery对象中吗? 请查看页面下方的示例MSDN article

答案 1 :(得分:0)

这个重新设计来自jQuery Mobile。事实证明解决方案是在编辑HTML(EG:$(element).trigger('create');)之后触发创建事件,告诉jQuery Mobile有新的HTML风格。

另一种方法是添加data-role='none',以便jQuery Mobile单独留下您的HTML。我可能主要使用后者,但知道两者都存在是很好的。

实际上在another StackOverflow question找到了答案 - 诀窍是知道jQuery Mobile是重要的,这比LightSwitch本身更容易找到信息。