什么是使用Knockout的"attr"数据绑定与"readonly"和"disabled"等独立属性建议的"最佳实践"方法?
这些属性是特殊的,因为它们通常由属性值设置为属性名(虽然很多浏览器正常工作,如果你只是不包含在HTML的任何值的属性名称)启用:
<input type="text" readonly="readonly" disabled="disabled" value="foo" />
Run Code Online (Sandbox Code Playgroud)
但是,如果你不做要应用这些属性,一般的做法是简单地完全从HTML忽略它们(而不是做这样的事情只读="假"):
<input type="text" value="foo" />
Run Code Online (Sandbox Code Playgroud)
Knockout的"attr"数据绑定不支持这种情况.只要我提供属性名称,我还需要提供一个值:
<input type="text" data-bind="attr: { 'disabled': getDisabledState() }" />
Run Code Online (Sandbox Code Playgroud)
是否有跨浏览器方式关闭'禁用'或'只读'?或者是否有一个自定义绑定的技巧,如果我不想禁用该项或使其成为只读,我可以使用它来呈现任何内容?
这里的一些开发人员正在讨论关于来自RESTful API的GET请求是否应该返回所请求资源的ID的友好(有些人会说是宗教性的).我们假设以下GET请求:
http://my.api.com/rest/users/23
目前返回:
{"name": "Jim", "age": 40, "favoriteColor": "blue"}
Run Code Online (Sandbox Code Playgroud)
请注意,结果集中缺少"id".
基本上有4个阵营与这个问题作斗争.
CAMP#1:当呼叫者发出GET请求时,他们已经知道了ID.因此,结果集应该不包括ID.如果调用者需要此数据来启用UI编辑,则调用者需要通过ID 23,可能手动将成员{"id":23}添加到JSON.
Camp#1中的人员也认为结果集中ID的存在表明该值可以被修改,当然它不能.
CAMP#2:没有ID,JSON结果集本身不能用于UI表单中的编辑/更新操作.相反,AJAX回调机制需要负责传递ID字段并手动将这些字段添加到结果集中.这似乎很笨拙且容易出错.UI人员正在争论结果集"感觉"就像缺少应该存在的数据,即ID.
营地#3:这些人关心的是一致性.如果我们有API返回的用户对象集合,这些对象必须包含ID.因此,为了保持一致性,GET的单例版本还应包含ID.
CAMP#4:这些人建议用户的GET请求可以返回包含ID的HyperMedia或SelfLinks形式的元数据.
这不是一个深奥的"谁是对的?" 争论,或者.我们采用的方法将决定API的形状,并影响几个开发人员在新的几周内的工作量.
我有一个使用JQuery + Knockout的基于AJAX的丰富Web应用程序.我有一个jQuery插件,围绕我的淘汰赛视图模型暴露实用方法,如().reset段,.isDirty() ,等等.
我有一个名为.setBaseline()的方法,它基本上在数据模型填充后(通过映射插件)获取数据模型的快照.然后我可以使用此快照快速确定模型是否已更改.
我正在寻找的是某种通用函数,它可以返回一个对象,该对象表示两个JavaScript对象之间的差异,其中一个对象被认为是主对象.
例如,假设这是我的快照:
var snapShot = {
name: "Joe",
address: "123 Main Street",
age: 30,
favoriteColorPriority: {
yellow: 1,
pink: 2,
blue: 3
}
};
Run Code Online (Sandbox Code Playgroud)
然后假设实时数据如下所示:
var liveData = {
name: "Joseph",
address: "123 Main Street",
age: 30,
favoriteColorPriority: {
yellow: 1,
pink: 3,
blue: 2
}
};
Run Code Online (Sandbox Code Playgroud)
我想要一个返回以下内容的.getChanges(snapShot,liveData)实用程序函数:
var differences = {
name: "Joseph",
favoriteColorPriority: {
pink: 3,
blue: 2 …
Run Code Online (Sandbox Code Playgroud) 我有一个在Windows Azure上托管的ASP.NET/C#网站.该网站是一个基于预测的社交网站,在主页上提供了预测摘要.如果单击摘要,则会使用简单的QueryString将您重定向到该预测的详细信息页面.
例如:
http://www.ipredikt.com/details.aspx?id=14
这个特别的预测名为"帕丽斯·希尔顿将赢得诺贝尔和平奖",所以我想做的是在Azure上为我的网站实施URL重写,如下所示:
http://www.ipredikt.com/predictions/14/paris-hilton-will-win-the-nobel-peace-prize
这样做的策略和最佳实践是什么?并且有人可以指向我一篇优秀的Azure特定文章.
带连字符的标题("paris-hilton-bla-bla")实际上只是为了让URL更具人性化; 在加载页面方面,我根本没想到完全依赖它.事实上,我可能会允许重复的标题,因为我将依赖URL中的预测ID.
编辑:
忘了提一下我们不是基于MVC.我们提出了自己的架构,它使用PageMethods和WebMethods将JSON返回给客户端.我们依靠ASP.NET AJAX来完成所有JSON序列化,几乎所有的UI都是使用jQuery在客户端上动态构建的.
编辑:解决方案
以为我现在分享我的解决方案,我已经开始运行了.
我按如下方式创建了一个新类(从某处逐字复制):
public class WebFormRouteHandler<T> : IRouteHandler where T : IHttpHandler, new()
{
public string VirtualPath { get; set; }
public WebFormRouteHandler(string virtualPath)
{
this.VirtualPath = virtualPath;
}
public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
return (VirtualPath != null)
? (IHttpHandler)BuildManager.CreateInstanceFromVirtualPath(VirtualPath, typeof(T))
: new T();
}
}
Run Code Online (Sandbox Code Playgroud)
我将以下方法添加到Global.asax.实际的方法很长,更长(它涵盖了网站中的每一页).你会看到我支持以多种不同的方式调用预测页面:带有id,带有id + title等等.("... fb"版本的页面是针对我网站的Facebook应用版本的使用不同的MasterPage.)
public static void RegisterRoutes(RouteCollection routes)
{
// Details : 'predictions' …
Run Code Online (Sandbox Code Playgroud) 好,朋友们.这是一个Java面试类型的问题,似乎让一些非常聪明的人在这里难倒.他们实际上需要这个用于生产代码,因此它不仅仅是一个采访益智游戏.
他们需要一个正则表达式,在Java中,如果一个字符串文字是返回true 东西以外的3个字母的单词NIL.测试需要不区分大小写,RegEx本身必须完成所有工作.
因此,RegEx应该拒绝NIL,nil,NiL,nIL等.
但是,它应该接受:nile,anil,will,zappa-nil-a和空字符串.
编写一个简单的RegEx需要多少Java开发人员?显然很多!
用于实现JQuery命名空间以托管通用实用程序功能的当前"经验法则"是什么?
我有许多分散在各种文件中的JavaScript实用程序方法,我想将它们整合到一个(或多个)命名空间中.最好的方法是什么?
我目前正在查看两种不同的语法,按优先顺序列出:
//******************************
// JQuery Namespace syntax #1
//******************************
if (typeof(MyNamespace) === "undefined")
{
MyNamespace = {};
}
MyNamespace.SayHello = function ()
{
alert("Hello from MyNamespace!");
}
MyNamespace.AddEmUp = function (a, b)
{
return a + b;
}
//******************************
// JQuery Namespace syntax #2
//******************************
if (typeof (MyNamespace2) === "undefined")
{
MyNamespace2 =
{
SayHello: function ()
{
alert("Hello from MyNamespace2!");
},
AddEmUp: function (a, b)
{
return a + b;
}
};
}
Run Code Online (Sandbox Code Playgroud)
语法#1更加冗长,但似乎更容易维持下去.我不需要在方法之间添加逗号,我可以保持对齐所有函数. …
我有一个出色设计的app_offline.htm文件,当我正在做备份数据库时,我想定期在我的网站上显示这个文件.在具有真实文件系统的服务器上,这不是问题:我只是将app_offline.htm复制到我的应用程序的根目录,IIS将发挥其魔力并将所有请求重定向到此文件.
但是,我使用Azure,因此没有真正的文件系统,并且没有简单的方法将文件从一个位置移动到另一个位置.
我怎样才能使app_offline.htm与Azure很好地配合?
我有一个功能齐全的Knockout模板,用于一些与基于Knockout的共享数据网格一起使用的分页UI.此模板为网格中的每个"页面"数据呈现HREF.
该模板有效,但它很笨重,因为如果我获取大量数据,那么我最终会在网格下方有数十个和几十个导航页面链接.这是当前的模板:
<div class="idTemplate_ko_simpleGrid_pageLinks">
<p>
<span>Go to page:</span>
<!-- ko foreach: ko.utils.range(0, maxPageIndex) -->
<a href="javascript:void(0);"
class="grid-pagination"
data-bind="text: $data + 1, click: function() { $root.currentPageIndex($data) }, css: { selected: $data == $root.currentPageIndex() }"></a>
<!-- /ko -->
</p>
</div>
Run Code Online (Sandbox Code Playgroud)
'currentPageIndex'值只是模型中一个简单的ko observable:
this.currentPageIndex = ko.observable(0);
Run Code Online (Sandbox Code Playgroud)
'maxPageIndex'是模型中的计算可观察值:
this.maxPageIndex = ko.computed(function () {
return Math.ceil(ko.utils.unwrapObservable(this.filteredItems()).length / this.pageSize()) - 1;
}, this);
Run Code Online (Sandbox Code Playgroud)
如何修改模板和模型以启用类似于StackOverflow的分页UI?
例如:
prev 1 ... 3 4 5 6 7 ... 69 next
我的业务合作伙伴和我共同开发了一个部署在Azure上的Web应用程序.我的盒子基于64位Windows 7,但我的合作伙伴使用的是32位Windows 7.
当我从我的System32目录(我的盒子上的64位)添加对'ieframe.dll'的引用时,在VS2010 IDE中,IDE实际上带来了DLL 的SysWoW64(32位)版本.
两个开发框都与32位WOW版本的' ieframe.dll ' 完美配合,但是当我们部署到Azure时,我们在对' ieframe.dll ' 进行Interop/DllImport调用时会得到一个EntryPointNotFoundException.所以看起来Azure想拥有64位版本.
我们如何将64位版本部署到Azure,但在我们的开发盒上继续使用32位版本?
编辑:显然,我们可以通过在某处复制64位'ieframe.dll'手动执行此操作,然后手动将其放在'bin'目录中,但有没有更好的最佳实践方法在Azure中执行此操作?
编辑#2:对于这种情况,我们最终将osFamily ="1"的Azure节点更改为osFamily ="2".这样做会安装包含IE8的Windows Server 2008 R2(而不是Windows Server 2008 SP1中的IE7).无需混淆32位与64位版本或手动将DLL复制到服务器.
"Ultra Find"的Visual Studio扩展发生了什么?我已经在这个网站和互联网上看到过这个涉嫌令人敬畏的扩展的参考资料.这里有几个链接:
http://blog.arainia.com/2010/08/ultra-find-getting-started.html
http://coolthingoftheday.blogspot.com/2010/08/i-find-you-ultra-ultra-find-vs2010-add.html
这是一个SO链接:
如何从Visual Studio文件搜索中排除designer.cs
但是,当我在VS Extension Manager中搜索时,没有任何显示.好像扩展从未存在过.
azure ×3
knockout.js ×3
jquery ×2
json ×2
32-bit ×1
64-bit ×1
api ×1
asp.net ×1
c# ×1
data-binding ×1
dllimport ×1
filesystems ×1
findinfiles ×1
html ×1
java ×1
javascript ×1
mvvm ×1
namespaces ×1
null ×1
paging ×1
query-string ×1
readonly ×1
regex ×1
rest ×1
templates ×1