我有一个Bootstrap popover,其中包含一个JS元素,点击后,使用Bootstrap网站上显示的手动方法关闭popover,即
$('#element').popover('hide')
Run Code Online (Sandbox Code Playgroud)
但是,然后在打开popover的元素上点击两次以重新打开它.这就好像它仍然认为弹出窗口正在显示,所以第一次点击是切换它关闭,然后第二次点击然后再次打开它.有谁知道如何使用JS正确关闭弹出窗口以避免这种情况?我创造了以下小提琴来演示这个问题.
http://jsfiddle.net/fxqzn4xd/1/
非常感谢.
更新:此问题与提议的问题不重复
一如既往地感谢SO社区保持整洁和相关的地方.但是,这不是拟议问题的重复.该问题的问题在于弹出窗口直到第一次点击才初始化.因此,第一次单击不会打开弹出窗口,但会初始化它,以便第二次和所有后续点击工作.
这不是我发现的问题.弹出窗口是在页面加载时初始化的,所以我的第一次点击会打开弹出窗口.使用手动.popover('hide')方法关闭时,第二次单击则不起作用.即每个其他点击在我的场景中起作用.这些是由不同问题引起的不同问题.链接帖子中的问题是在第一次点击之前初始化弹出窗口,我已经这样做了.
我报告了我在GitHub上的twbs bootstrap项目中发现的问题,结果发现这是一个已知的bug,在7月份的3.3.5版中首次报道.它有一个3.3.6的里程碑修复但是下滑(最近出现了3.3.6),现在有3.3.7的里程碑.关于Github的详细信息:
调用.popover('hide')可防止在下次单击#18860时打开popover
好消息是,有一个简单的解决方法可以在等待它提交到3.3.7时应用.我会把它作为解决方案发布.
更新2 同意:这是新提出的"重复"问题的副本.看起来问问者在我面前遇到了这个问题!我会在这里留下这个问题,但很明显我(和其他人)在寻找时并没有找到那个,所以希望它可以提供帮助.
我想为Web API启用属性路由,因为它看起来会使路由更容易定义.这里的示例:http://www.asp.net/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2显示了如何在WebApiConfig中完成它. cs文件:
using System.Web.Http;
namespace WebApplication
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API routes
config.MapHttpAttributeRoutes();
// Other Web API configuration not shown.
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我的项目是一个旧的Web表单项目,最初是在.Net 2.0中启动的(多年来经过几次升级后现在已经达到4.5).我没有WebApiConfig.cs文件,而是使用以下方法直接在global.asax Application_Start方法中定义当前路由:
RouteTable.Routes.MapHttpRoute(...)
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释在这种情况下启用基于属性的路由的最佳方法吗?谢谢
我刚刚在 VS2015 .Net v4.5.2 控制台应用程序中输入了以下代码:
dynamic fromString = "blah", toString = "blah2";
DateTime fromDate, toDate;
if (DateTime.TryParse(fromString.ToString(), out fromDate) && DateTime.TryParse(toString.ToString(), out toDate)) {
Console.WriteLine(fromDate);
Console.WriteLine(toDate);
}
Run Code Online (Sandbox Code Playgroud)
出乎意料的是,我收到错误“使用未分配的局部变量 toDate”。我没想到,因为只有在从第二个 TryParse 中为“toDate”分配了一个值时,才会输入 if 语句。
不用说,它可以通过为 'toDate' 分配一个值来解决:
DateTime fromDate, toDate = DateTime.MinValue;
Run Code Online (Sandbox Code Playgroud)
或者将 && 更改为 & 以便无论第一次失败如何都会执行两个 TryParses。
但是,我想知道为什么会发生错误?如果变量 fromString 和 toString 是字符串,则不会发生错误并且编译器不会给出 toDate 未分配的错误。因此我想知道为什么编译器对待string和dynamic.ToString()不同?
我是EF的新手并且正在努力实现以下场景.我有一个实体,我想要一个导航属性到另一个相同的实体.例如
public class Stage {
public int ID { get; set; }
public int? NextStageID { get; set; }
public string Name { get; set; }
public virtual Stage NextStage { get; set;}
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,我发现的唯一例子是实体具有父/子关系,即导航属性是同一实体的ICollection.我试过调整它但是无法让它在我的实例中工作.此外,我只需要它是一种方式,即实体没有'PreviousStage'属性,只有'NextStage'属性.我正在使用Fluent API进行配置.有人可以建议是否/如何实现这一目标?
我收到此错误:
无法确定类型'namespace.Stage'和'namespace.Stage'之间关联的主要结尾.必须使用关系流畅API或数据注释显式配置此关联的主要结尾
编辑 刚刚在我的略微简化的例子中实现,我没有表明NextStageID是可选的(int?).
我正在使用实体框架。我使用以下命令将代表数据库中实体的POCO对象附加到我的dbcontext中:
var entity = new MyEntity() { ID = 1, AnotherItemID = 10 };
context.Set<T>().Attach(entity);
Run Code Online (Sandbox Code Playgroud)
到目前为止,一切都很好。我可以访问集合并使用添加的实体。它以“未更改”状态添加。但是,它只是POCO,而不是代理。因此,当我尝试访问导航属性(例如myEntity.AnotherItem)时,我只会得到一个空值。
有谁知道是否有一种方法可以让EF通过这种方式解析附加POCO类的导航属性?还是将POCO强制转换为代理类的方法?
谢谢
更新 有两种方法可以解决此问题(当然也可能有其他方法!)。一种是下面的答案中的“显式加载”选项。允许延迟加载工作的另一种方法是,在创建要附加的实体时使用DBSet Create方法而不是POCO new关键字。有关此的更多信息:
我创建了一个像这样的接口:
public interface ICacheable {
void CloneTo<T>(T entity) where T : class, new();
}
Run Code Online (Sandbox Code Playgroud)
但是,当我在类中实现接口时,我必须定义 CloneTo 方法也使用 T 作为类型,如下所示:
public class MyEntity : ICacheable {
public void CloneTo<T>(T genericEntity) where T : class, new() {}
}
Run Code Online (Sandbox Code Playgroud)
这确实编译并运行。但是,这并不理想,因为我可以将实现 ICacheable 的任何其他项目传递给我只希望能够发送类实例的方法。我真正想要的是更像这样实现它:
public class MyEntity : ICacheable {
public void CloneTo(MyEntity entity) {}
}
Run Code Online (Sandbox Code Playgroud)
这样我只能传递正确类型的实体。
我尝试改为创建 T 的界面,即
public interface ICacheable<T>
Run Code Online (Sandbox Code Playgroud)
这确实允许我调整实现类的方法以仅接受该类型。但是,那时我无法再拥有List<ICacheable>.
有谁知道是否有可能实现我在这里尝试做的事情?谢谢!
我正在学习将dojo用于我即将进行的项目,所以提前承认这可能是一个非常基本的问题.我试图找到答案,但没有成功.另外,我不得不使用稍微旧版本的dojo - 1.6我认为没有AMD.
我使用dojo.declare对一个类进行了delcared,这是一个稍微修改过的示例:
dojo.declare("myNamespace.CustomClass", null, {
firstProperty: "The default value",
constructor: function () { }
Test: function () {
alert(this.firstProperty);
}
});
Run Code Online (Sandbox Code Playgroud)
所以,本质上,一个名为CustomClass的类具有一个名为firstProperty的公共属性,其默认值为"默认值",一个当前不执行任何操作的构造函数和一个名为Test的公共方法,在调用时将以值为firstProperty.
我的假设是,当我创建一个CustomClass实例并调用Test()时,我会得到一个带有"默认值"的警告框.但是,我没有,我得到一个带有"未定义"的警报框.如果我在创建实例后设置firstProperty的值,然后调用Test,它就可以工作,我得到了属性设置的任何内容.因此,一种方法是在构造函数中设置默认值,但我读过的建议它应该按我假设的方式工作,所以我宁愿正确地做.
我也尝试在构造函数中调用dojo.safeMixin(this,null)作为我读过的东西让我怀疑这是否是必需的,但它并没有什么区别.
无论如何,提前感谢读取此内容!西蒙
我正在使用dgrid,但是找到网站上提供的文档(http://dojofoundation.org/packages/dgrid/)有点缺乏:它教你基本知识,但似乎让你知道如何做更多的事情通过猜测来复杂化.
具体来说,我想修改我加载到内存存储中的数据的呈现方式.例如,我实际上想要将商店中的两列组合成网格中的一列以及一些其他文本.显然,一种方法是创建第二个内存存储,迭代第一个存储并构建dgrid应该在第二个存储中显示的确切内容.然而,这感觉很笨,并且不得不拥有两组相同的数据,只是形式不同.
我可以看到有renderRow和renderCell方法.谁能给我一些如何使用它们的例子,或者指出一些文档?
谢谢,西蒙
我从安全角度提出了有关使用GUID的一些建议.我开发了一个ASP.Net应用程序.它为用户提供对Web服务器上不存在的某些材料(如文档和照片)的访问权限.这些存储在文件服务器上.我有一个'GetResource.aspx'页面,它获取资源的ID,使用System.IO.FileInfo将其打开到响应流并返回它.
因此,GetResource.aspx?id = 123会返回一个用户有权访问的图片.当然,用户可以手动输入URL作为GetResource.aspx?id = 456,在这种情况下,将返回具有该ID的图片/文档等,并且它可能不是他们有权访问的人.
所以显然使用整数ID是不够的.使用GUID作为ID提供足够的"随机性",我可以可靠地假设用户永远不能手动输入"GetResource.aspx?guid = {A guessed guid}"并期望访问有效资源,包括使用脚本每秒做出许多随机猜测?
或者,没有替代从Session变量确定用户的ID,确定他确实有权访问所请求的资源,然后才返回它(在我写这个时,我越来越相信是这样的! ).
谢谢
我正在使用Dojo内存存储(dojo/store/Memory).我想基于通配符查询检索项目,但查询方法似乎不支持通配符.即给出以下项目:
{ id: "apple", details: "fruit" }
{ id: "applemac", details: "computer" }
Run Code Online (Sandbox Code Playgroud)
store.query({ id: "apple" })按预期返回第一行,但不store.query({ id: "apple*" })返回任何内容.
有谁知道是否可以使用通配符,如果可以,怎么样?
谢谢