我是.NET新手的Java开发人员.我正在开发.Net MVC2项目,我希望有一个局部视图来包装一个小部件.每个JS小部件对象都有一个JSON数据对象,该对象将由模型数据填充.然后,更新此数据的方法绑定到在窗口小部件中更改数据时的事件,或者如果在另一个窗口小部件中更改了该数据.代码是这样的.
myController的
virtual public ActionResult DisplaySomeWidget(int id) {
SomeModelView returnData = someDataMapper.getbyid(1);
return View(myview, returnData);
}
Run Code Online (Sandbox Code Playgroud)
myview.ascx
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<SomeModelView>" %>
<script type="text/javascript">
//creates base widget object;
var thisWidgetName = new Widget();
thisWidgetName.updateTable = function() {
// UpdatesData
};
$(document).ready(function () {
thisWidgetName.data = <% converttoJSON(model) %>
$(document).bind('DATA_CHANGED', thisWidgetName.updateTable());
});
</script>
<div><%:model.name%></div>
Run Code Online (Sandbox Code Playgroud)
我不知道的是如何通过SomeModelView发送数据,然后能够使用它来填充小部件以及将其转换为Json.我似乎有一些真正简单的方法在控制器中执行它而不是在视图中.我认为这是一个基本问题,我已经花了几个小时试图制作这个光滑的.
我无法在任何地方找到这些信息.可能是因为谷歌忽略了关键词.使用<%:和<%=在您的aspx页面之间有区别吗?他们似乎可以互换.
我试图找到一种方法来包装元素的内部文本,我不想要任何其他内部dom元素.例如.
<ul>
<li class="this-one">
this is my item
<ul>
<li>
this is a sub element
</li>
</ul>
</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
我想用jQuery来做这件事.
<ul>
<li class="this-one">
<div class="tree-item-text">this is my item</div>
<ul>
<li>
<div class="tree-item-text">this is a sub element</div>
</li>
</ul>
</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
一点背景是我需要制作一个内部树结构ui元素,所以我使用UL结构来表示这一点.但我不希望开发人员必须使用任何特殊格式来使用窗口小部件.
更新:我只是想添加这个的目的是我想添加一个点击监听器,以便能够扩展li下的元素,但是,由于这些元素都在li内,因此点击监听器即使在点击子项时也会激活,所以我想把它附加到文本上,为此,文本需要是可定位的,这就是为什么我想把它包装在它自己的div中.
到目前为止,我已经想出了将div中的所有内部元素包装在div中,然后将所有内部dom元素移回原始父元素.但是这个代码非常重,可能更简单,不需要那么多DOM操作.
编辑:想要分享我想出的第一个伪替代品,但我认为这是我想要完成的任务.
var innerTextThing = $("ul.tree ul").parents("li").wrapInner("<div class='tree-node-text'>");
$(innerTextThing.find(".tree-node-text")).each(function(){
$(this).after($(this).children("ul"));
});
Run Code Online (Sandbox Code Playgroud)
回答:我最后做了以下工作,仅供参考,我只需要担心FF和IE的兼容性,所以在其他浏览器中没有经过测试.
//this will wrap all li textNodes in a div so we can target them.
$(that).find("li").contents()
.filter(function () {
return this.nodeType == 3;
}).each(function () {
if …Run Code Online (Sandbox Code Playgroud) 我是前端工程师,我们的团队正在将许多旧服务转换为用clojure编写的微服务.我看到的主要问题是,clojure命名约定更喜欢连字符,而不是变量名中的单词.这意味着如果您将变量直接映射到JSON,则任何JS使用者都需要使用括号表示法来访问此数据,例如response ['to-separate-words'].这显然不太理想.我认为这将是一个简单的查找最佳实践,但我一直在寻找一个小时,似乎我阅读的所有文档都避免了这个问题,但使用单个单词.还有其他人处理过此事.