我正在构建一个MVC 5 Web应用程序,其中我在视图上有一个JSTREE实例。 Tree正在加载正常,但是当我在数据库中更改了som数据,并且重新加载树时,我得到了错误:
未捕获的TypeError:$(...)。jstree不是函数
这个错误似乎与我对树,重新加载,刷新等所做的任何事情都有关。
失败的一个例子:
$("#tree")
.jstree({
"core": {
"data": [{ text : "node", "children" : ["1","2"] }]
}
});
$('#rfr')
.on("click", function (e, data) {
$("#tree").jstree(true).deselect_all();
$("#tree").jstree(true).refresh();
$("#tree").jstree("refresh");
});
@{
ViewBag.Title = "OrgAdmin";
}
<script src="@Url.Content("~/Scripts/jquery-1.10.2.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jstree.js")" type="text/javascript"></script>
<link rel="stylesheet" type="text/css" href="@Url.Content("~/Scripts/themes/default/style.min.css")">
<div id="tree"></div>
<button id="rfr">refresh</button>
我从一个工作小提琴中获取了代码:http://jsfiddle.net/DGAF4/30/ 这里刷新工作,但是当复制到我的mvc应用程序时,它失败
我希望你能帮助我,让我的mvc app刷新这棵树。
好心的Kåre答案 0 :(得分:0)
我在为'全部关闭'和'展开全部'添加两个按钮时遇到了类似的问题,并设法通过在_Layout中注释掉jquery捆绑行来解决。 cshtml文件:
@Scripts.Render("~/bundles/jquery")
显然,源代码似乎包括两次jquery引用,一个在_Layout.cshtml文件中,一个在我的视图文件中。一旦我删除了jquery包,它运行正常。我想我必须在其他视图中显式添加jquery引用。希望有所帮助。
这是视图代码:
@using OrgChart.Models;
@using OrgChart.Controllers;
@model IEnumerable<TreeNode>
@{ ViewBag.Title = "Home Page";}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jstree/3.3.1/themes/default/style.min.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jstree/3.3.1/jstree.min.js"></script>
<script type="text/javascript">
jQuery(function ($) {
var $treeview = $("#treeview");
$treeview.jstree({
"core": { // core options go here
"multiple": false, // no multiselection
"themes": {
"dots": false // no connecting dots between dots
}
},
"state": { "key": "state_demo" },
"plugins": ["themes", "html_data"]
})
//.on('ready.jstree', function () {
// $treeview.jstree('open_all');
//});
});
</script>
<br/>
<input id="btnCloseAll" type="button" value="Collapse All" onclick="$('#treeview').jstree('close_all');">
<input id="btnExpandAll" type="button" value="Expand All" onclick="$('#treeview').jstree('open_all');">
<br /><br />
<div class="row">
<div id="treeview" class="treeview">
@MvcHtmlString.Create(Html.RenderTree(ViewData.Model, node => node.Name))
</div>
</div>