View通常需要具有这些属性的对象才能呈现:
{ el: '#someelement', model: someModel }
Run Code Online (Sandbox Code Playgroud)
View还允许我们将模型的事件绑定到视图中的函数:
initialize: function() {
this.model.bind('change', this.renderFromModel, this);
},
render: function() {
$(this.el).html(this.template(this.model.toJSON()));
return this;
},
renderFromModel: function() {
var t = _.template($('#some-template').html());
$('item-' + this.cid).html(t(this.toJSON()));
return this;
},
Run Code Online (Sandbox Code Playgroud)
问题是我们第一次实例化一个View for rendering时,它期待一个带有Model的对象; 第二次从模型中调用它时渲染视图,它不是.因此,我最终创建了两个render()函数.
有没有更好的方法来实现单项渲染,也可以响应model.change()事件?
什么存储Q?
Q = $('div');
Q2 = document.getElementsByTagName('div');
Run Code Online (Sandbox Code Playgroud)
我可以通过使用来访问每个HTML元素Q[index],类似于Q2[index]; 这看起来像是Q一个HTML元素数组.
在另一方面,我可以做Q.filter(),但我不能做Q2.filter(); 这使它看起来像是Q一个jQuery对象的数组.
或者它是两者,Q一个jQuery对象,其中包含一堆HTML元素?如果是这种情况,不会console.log()检测到Q内部有对象集合的对象吗?这个小提琴,http://jsfiddle.net/rkw79/3s7tw/,表明它们是一样的.
注意:我知道Q.eq(index)将返回一个可以使用jQuery方法的对象.我只是想知道到底是什么Q
我在使用MVC3进行验证方面遇到了很多麻烦.我直接加载页面时工作正常,但是当我使用jquery AJAX POST时它不会验证:
使用这个表单加载$('#modal-dialog').load('/DartsMVC/Restaurant/Edit/13'),这是呈现的HTML:
<form action="/DartsMVC/Restaurant/Edit/13" method="post">
<fieldset>
<legend>Restaurant</legend>
<input data-val="true" data-val-number="The field RestaurantID must be a number." data-val-required="The RestaurantID field is required." id="RestaurantID" name="RestaurantID" type="hidden" value="13">
<div class="editor-label">
<label for="Name">Name</label>
</div>
<div class="editor-field">
<input class="text-box single-line" data-val="true" data-val-required="The Name field is required." id="Name" name="Name" type="text" value="furaibo">
<span class="field-validation-valid" data-valmsg-for="Name" data-valmsg-replace="true"></span>
</div>
<p>
<input type="submit" value="Save" class="ui-button ui-widget ui-state-default ui-corner-all" role="button" aria-disabled="false">
</p>
</fieldset>
</form>
Run Code Online (Sandbox Code Playgroud)
拦截表单/提交使用AJAX POST.帖子完成后,模式对话框会自动弹出并关闭.我想在发送帖子之前验证表单:
// force change the submit data to an ajax POST (usually …Run Code Online (Sandbox Code Playgroud) 从ASP.NET 2.0(VB)到MVC 3(C#),我对用于View的语法感到非常困惑.
@Html.LabelFor(m => m.UserName)
Run Code Online (Sandbox Code Playgroud)
那个m来自哪里?我唯一的猜测是它代表了传递给视图的模型.我尝试将m更改为c,它仍然可以正常工作.
语法的一部分是否涉及"=>"更多的MVC,C#或Razor元素?
window.SomeView = Backbone.View.extrend({
initialize1: function() {
_.bindAll(this, 'render');
this.model.bind('change', this.render);
},
initialize2: function() {
this.model.bind('change', _.bind(this.render, this));
},
initialize3: function() {
_.bind(this.render, this);
this.model.bind('change', this.render);
},
});
Run Code Online (Sandbox Code Playgroud)
在一些SO成员的帮助下,我能够让我的测试项目使用绑定方法initialize1和initialize2; 我不明白的是为什么initialize3不起作用?
这是一个新手问题......
我正在查看默认的asp.net mvc3项目,并注意到有一个名为的控制器:
public class AccountController : Controller
Run Code Online (Sandbox Code Playgroud)
我查看了整个代码,找不到指定AccountController映射到/ Account /的URL的地方.
我发现,您可以使用路由的改变routes.MapRoute(..)的Global.asax,但我还是不知道他们指定的AccountController映射到/帐号/.
如果从类名中假设它,那么这是否意味着所有控制器类都必须命名为xxxxxController?
window.CardList = Backbone.Collection.extend(...);
var Cards = new CardList;
Cards.filter(...).pluck('values')
Run Code Online (Sandbox Code Playgroud)
是否有一种干净的方法来过滤集合然后采集值?我知道的唯一工作是重新初始化集合:
new CardList(Cards.filter(...)).pluck('values')
Run Code Online (Sandbox Code Playgroud)
或者在输出过滤后映射输出:
Cards.filter(...).map(...)
Run Code Online (Sandbox Code Playgroud)
这看起来很奇怪,因为它有一个非常好的.pluck()方法
列表框中的选定项目将显示在下面的UL中.单击UL中的项目,它将从列表框中删除它并从UL中删除.
重现错误:http://jsfiddle.net/rkw79/mmBKf/2/
请注意,事件已触发,但未添加该项
现在执行相同的步骤,除了使用.prop('selected','')而不是.removeProp('selected'):http://jsfiddle.net/rkw79/mmBKf/3/
var myView = Backbone.View.extend({
tagName: 'div',
className: function() {
return this.model.isNew() ? 'new' : 'old';
}
Run Code Online (Sandbox Code Playgroud)
这是我想要的功能,但它不起作用.我不确定何时确定类名,但被调用者只是元素本身; 在这种情况下,它会<div></div>.有没有办法让className访问模型?
我可以,并且目前,在我的模板中放置另一个div,以便控制类,但如果我能够从View本身控制类名,则绝对不需要div.
backbone.js ×4
jquery ×3
asp.net-mvc ×2
ajax ×1
c# ×1
classname ×1
controller ×1
javascript ×1
post ×1
razor ×1
routes ×1