所以,我们有主要的开发线,我创建了一个分支,开发人员b创建了一个分支.我们都做了一些工作.开发人员b完成他的工作,合并回主开发线.我知道他的更改会影响我,而不是稍后处理冲突,我想更新我的分支,现在在主开发行中的更改,所以我可以在合并之前在我的分支中处理它们回到主要.
我怎么做?
所以,我有一个加载的页面,并通过jquery.get发出几个请求,用它们的值填充下拉列表.
$(function() {
LoadCategories($('#Category'));
LoadPositions($('#Position'));
LoadDepartments($('#Department'));
LoadContact();
};
Run Code Online (Sandbox Code Playgroud)
然后调用LoadContact(); 这是另一个调用,当它返回时,它会填充表单上的所有字段.问题是通常,下拉列表并非全部填充,因此,它无法将它们设置为正确的值.
我需要做的是,只要其他方法完成并且回调完成执行,LoadContact就会以某种方式执行.
但是,我不想在下拉填充回调的末尾放置一堆标志,然后检查,并且在调用LoadContact()之前必须进行递归的setTimeout调用检查;
jQuery中有什么东西可以让我说,"当所有这些都完成时执行它."?
更多信息 我正在考虑这些问题
$().executeAfter(
function () { // When these are done
LoadCategories($('#Category'));
LoadPositions($('#Position'));
LoadDepartments($('#Department'));
},
LoadContact // Do this
);
Run Code Online (Sandbox Code Playgroud)
...它需要跟踪在执行方法期间发生的ajax调用,并且当它们全部完成时,调用LoadContact;
如果我知道如何拦截在该函数中创建的ajax,我可能会编写一个jQuery扩展来执行此操作.
我的解决方案
;(function($) {
$.fn.executeAfter = function(methods, callback) {
var stack = [];
var trackAjaxSend = function(event, XMLHttpRequest, ajaxOptions) {
var url = ajaxOptions.url;
stack.push(url);
}
var trackAjaxComplete = function(event, XMLHttpRequest, ajaxOptions) {
var url = ajaxOptions.url;
var index = jQuery.inArray(url, stack);
if (index >= 0) …Run Code Online (Sandbox Code Playgroud) 也许是我,但似乎你有一个XSD
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="User">
<xs:complexType>
<xs:sequence>
<xs:element name="GivenName" />
<xs:element name="SurName" />
</xs:sequence>
<xs:attribute name="ID" type="xs:unsignedByte" use="required" />
</xs:complexType>
</xs:element>
</xs:schema>
Run Code Online (Sandbox Code Playgroud)
它定义了此文档的架构
<?xml version="1.0" encoding="utf-8" ?>
<User ID="1">
<GivenName></GivenName>
<SurName></SurName>
</User>
Run Code Online (Sandbox Code Playgroud)
它将无法验证您是否添加了另一个元素,例如EmailAddress,并混淆了订单
<?xml version="1.0" encoding="utf-8" ?>
<User ID="1">
<SurName></SurName>
<EmailAddress></EmailAddress>
<GivenName></GivenName>
</User>
Run Code Online (Sandbox Code Playgroud)
我不想将EmailAddress添加到文档中并将其标记为可选.
我只想要一个XSD来验证文档必须满足的最低要求.
有没有办法做到这一点?
marc_s在下面指出你可以使用xs:any内部xs:sequence允许更多元素,遗憾的是,你必须维护元素的顺序.
或者,我可以使用xs:all哪个不强制执行元素的顺序,但是,唉,不允许我放在xs:any它内部.
我需要从c#中的样式表内联css.
就像这是如何工作的.
http://www.mailchimp.com/labs/inlinecss.php
css很简单,只是类,没有花哨的选择器.
我使用的是正则表达式考虑(?<rule>(?<selector>[^{}]+){(?<style>[^{}]+)})+剥离从CSS规则,然后尝试做简单的字符串替换所在班被称为,但一些HTML元素已经有一个风格的标签,所以我必须说明,作为好.
有更简单的方法吗?或者已经用c#写的东西?
如果您的html也是有效的xml,我已经能够提出一个简单的CSS内联器.它使用正则表达式来获取<style />元素中的所有样式.然后将css选择器转换为xpath表达式,并在任何预先存在的内联样式之前将样式内联添加到匹配元素.
注意,CssToXpath没有完全实现,有些东西它不能做......但是.
CssInliner.cs
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Xml.Linq;
using System.Xml.XPath;
namespace CssInliner
{
public class CssInliner
{
private static Regex _matchStyles = new Regex("\\s*(?<rule>(?<selector>[^{}]+){(?<style>[^{}]+)})",
RegexOptions.IgnoreCase
| RegexOptions.CultureInvariant
| RegexOptions.IgnorePatternWhitespace
| RegexOptions.Compiled
);
public List<Match> Styles { get; private set; }
public string InlinedXhtml { get; private set; }
private XElement XhtmlDocument { get; set; }
public CssInliner(string xhtml)
{
XhtmlDocument = ParseXhtml(xhtml);
Styles = GetStyleMatches(); …Run Code Online (Sandbox Code Playgroud) 所以,我有一个要删除的bug
foreach (XElement x in items.Elements("x"))
{
XElement result = webservice.method(x);
if (/*condition based on values in result*/)
{
x.Remove();
}
}
Run Code Online (Sandbox Code Playgroud)
问题是调用x.Remove()会改变foreach,如果有两个元素("x"),并且第一个被删除,则循环不会到达第二个x元素.
那我该如何循环呢?或者是否应该以另一种方式重写?
我有几个扩展方法来处理我的类的序列化,因为它可能是一个耗时的过程,它们每个类创建一次,并由此方法分发.
public static XmlSerializer GetSerializerFor(Type typeOfT)
{
if (!serializers.ContainsKey(typeOfT))
{
var xmlAttributes = new XmlAttributes();
var xmlAttributeOverrides = new XmlAttributeOverrides();
System.Diagnostics.Debug.WriteLine(string.Format("XmlSerializerFactory.GetSerializerFor(typeof({0}));", typeOfT));
xmlAttributes.Xmlns = false;
xmlAttributeOverrides.Add(typeOfT, xmlAttributes);
var newSerializer = new XmlSerializer(typeOfT, xmlAttributeOverrides);
serializers.Add(typeOfT, newSerializer);
}
return serializers[typeOfT];
}
Run Code Online (Sandbox Code Playgroud)
这是通过扩展方法调用的.Serialize()
public static XElement Serialize(this object source)
{
try
{
var serializer = XmlSerializerFactory.GetSerializerFor(source.GetType());
var xdoc = new XDocument();
using (var writer = xdoc.CreateWriter())
{
serializer.Serialize(writer, source, new XmlSerializerNamespaces(new[] { new XmlQualifiedName("", "") }));
}
return (xdoc.Document != null) ? xdoc.Document.Root …Run Code Online (Sandbox Code Playgroud) 有没有更好的方法来写这个?也许是一类,而不是两类.
using System;
namespace SnippetTool.Repositories
{
public abstract class ARepository<TProvider> where TProvider : class
{
protected TProvider Provider { get; set; }
protected ARepository(TProvider provider)
{
if (provider == null)
throw new ArgumentNullException("provider");
Provider = provider;
}
}
public abstract class ARepository<TProvider, TValidator> : ARepository<TProvider> where TProvider : class where TValidator : class
{
protected TValidator Validator { get; set; }
protected ARepository(TProvider provider, TValidator validator) : base(provider)
{
Validator = validator;
}
}
}
Run Code Online (Sandbox Code Playgroud) 我正在寻找一种在整个DOM中动态绑定公式的方法.
我们有一个数据密集型应用程序,目前我编写了许多处理程序来尝试重新计算和更新相应的单元格.但是,这很容易出错.
我看到了一些可能有能力的东西,哈希戈.然而,它在大约一年半的时间里没有更新.
有没有人知道正在积极开发的类似的东西?我一直在寻找,但这是我设法找到的.
理想情况下,我只需要设置公式,它将处理监视公式中的字段是否已更改,并相应地更新值.
编辑:我也jQuerySheet但它比我可以使用的方式更多,我只需要解析方面的公式.并且它的计算引擎似乎围绕具有列/行标识符的单元旋转太多.
EDIT2:这个jQuery Calculation插件越来越接近我需要的东西了.
编辑3:最后,我希望能够写出一些简单的东西
$('#output').formula(" ( SUM($('.x')) + $('#y') ) / ( funcThatReturnsValue() + 4 )");
Run Code Online (Sandbox Code Playgroud)
这会导致#output每当值.x或#y更改时重新计算的值.
但是,我可能会设置一些基本的东西
$('#output').formula({
formula: "(SUM(x)+y)/(j+k)",
variables: {
x: $('.x'),
y: $('#y'),
j: function() {
return 3;
},
k: 4
}
onblur: $('.x, #y')
});
Run Code Online (Sandbox Code Playgroud) 因此,在我的应用程序中,用户可以将他们的工作导出到excel.
它的工作原理是打开一个弹出窗口(window.open(...))然后父进程将数据写入表单,然后将表单发回服务器.
服务器生成文件,然后将其流回到弹出窗口,出现下载对话框.它还会使用令牌写入cookie.
此令牌对于每个下载弹出窗口都是唯一的,当窗口看到该cookie(定期检查)时,它会window.close()在用户收到文件下载提示时自行关闭.
这在IE7和IE8中运行良好
但是,因为IE9决定摆脱对话框并用信息栏替换它,所以在用户可以采取行动下载之前窗口关闭,如果他们点击它,他们就不知道何时完成而没有手动打开下载对话框.
作为临时解决方案,弹出窗口不再关闭.
但是,我希望能够为用户关闭它,因为一旦下载开始它对他们完全没用.
如何关闭此窗口并仍然能够在IE9中提醒用户他们的下载已完成且可以打开?
我正在编写我的第一个CQRS应用程序,假设我的系统调度了以下命令:
目前,这些导致相同的事件,仅用过去时(WorgentCreated,TeamCreated等)措辞,但它们包含相同的属性.(我不确定这是否正确,这是我的一个问题)
我的问题在于阅读模型.
我有一个Contingents读取模型,订阅了ContingentCreated,并具有以下方法:
List<ContingentQueries.Contingent> GetContingents();
ContingentQueries.Contingent GetContingent(System.Guid id);
ContingentQueries.Contingent GetContingent(string province);
Run Code Online (Sandbox Code Playgroud)
这些返回的Contingent类看起来像这样:
public class Contingent
{
public Guid Id { get; internal set; }
public string Province { get; internal set; }
}
Run Code Online (Sandbox Code Playgroud)
这适用于列表,但是当我开始考虑单个特遣队及其所有团队的视图的读取模型时,事情开始变得混乱.鉴于这些方法似乎微不足道:
ContingentQueries.Contingent GetContingent(System.Guid id);
ContingentQueries.Contingent GetContingent(string province);
Run Code Online (Sandbox Code Playgroud)
我使用一组团队为这些查询创建了Contingent类:
public class Contingent
{
public Guid Id { get; internal set; }
public string Province { get; internal set; }
public IList<Team> Teams { get; internal set; }
}
public class Team
{ …Run Code Online (Sandbox Code Playgroud)