我有一个名为route
的javascript函数,它应该从我的MVC控制器中获取function getRoute(selectedPart) {
var $form = $('#form-create'),
$routeDropdown = $('#dd-route'),
structure = _.template($('#tmpl-route-list').html());
if (selectedPart) {
$form.block();
$.get('@Url.Action("getRouteFromPart", "wip")', {
partId: selectedPart
}).done(function (response) {
$form.unblock();
var html = structure({ routes: response });
$routeDropdown.html(html);
});
} else {
$routeDropdown.html(structure({ routes: null }));
}
}
个对象的列表,并将它们插入到我视图的下拉菜单中。
这是功能:
selectedPart
解释
getRoute
是来自不同下拉列表的值(此处未显示)。根据在那里选择的内容,"wip"
将命中getRouteFromPart"
控制器并使用其“routes
操作返回一个名为#tmpl-route-list
的路由对象列表。然后它被认为是通过名为<% if (routes) { %>
<% foreach(var route in routes.routes) { %>
<option value="<%= route.routesId %>">
<% route.routesName %>
</option>
<% } % >
<% } %>
的underscore.js模板将该列表放入下拉菜单。
这是模板代码:
routes.routes
解释
routeId
指的是 routes 响应对象中的 routes 列表。我正在尝试遍历该列表,并将每个routeName
对象的route
和<option>
放入其自己的GET indexname/_search
{
"aggs": {
"count_by_type": {
"terms": {
"field": "_type"
}
}
},
"size": 0
}
标记中以进行下拉列表。
不用说,它不起作用。在javascript控制台中,它给出了错误“Unexpected token var”。如果我从foreach中删除'var',它会显示“Unexpected token {”。
注意:我在网站的其他部分几乎完全相同,但效果很好。唯一的区别是那里它只有一个对象放在下拉列表中,而这里我试图用一个对象列表来做。显然我的循环或其他东西有问题,但我不知道如何解决它。
有人可以帮忙吗?
答案 0 :(得分:0)
你的模板看起来都错了。
拨打_.forEach
的电话在哪里?回调在哪里?
见这里:https://jsfiddle.net/ub25v2c6/1/(打开控制台)。
我将模板更改为下面的代码段并且编译得很好。
var template = `
<% if (routes) { %>
<% _.forEach(routes.routes, function (route, i) { %>
<option value="<%= route.routesId %>">
<% route.routesName %>
</option>
<% }); %>
<% } %>
`;