我知道有几个问题,但我仍然认为有一些领域可以使用一些澄清,因为Turbolinks的做法(1 js文件来统治它们)当开始包含通过Ajax动态加载的内容时,显然会直接从窗口出来。
因此,关于通过<div class="form-horizontal">
<h4>Project</h4>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control", style = "max-width:300px;" } })
@Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@*@Html.LabelFor(model => model.Users, htmlAttributes: new { @class = "control-label col-md-2" })*@
@Html.Label("Developers", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.ListBox("Developers", null, htmlAttributes: new { @class = "form-control", style = "max-width:300px;" })
@Html.ValidationMessageFor(model => model.Users, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@*@Html.LabelFor(model => model.Users, htmlAttributes: new { @class = "control-label col-md-2" })*@
@Html.Label("Project Managers", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.ListBox("ProjectManagers", null, htmlAttributes: new { @class = "form-control", style = "max-width:300px;" })
@Html.ValidationMessageFor(model => model.Users, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
</div>
内部的Ajax动态加载的内容,因此最初没有被DOM识别,并且无法将任何JS绑定到已加载的新元素;
我有一种狡猾的怀疑,将JavaScript事件动态绑定到新元素的“Rails方式”是将任何JavaScript放入{{1}动态渲染部分的文件(?)但是它将所有的javascript分成很多不同的小文件在某种程度上感觉不直观。我目前包括我的大多数JS inline每个_partial.html.erb
文件,这对于绑定和解除绑定事件(这也感觉非常麻烦,更不用说不直观)给我带来了巨大的麻烦。
此外,js.erb
文件不在资产管道中,在生产中缩小了吗?或者你是否应该将每个js.erb文件放入资产管道中以使其缩小?
- 或者我错过了/误解了什么?