ChangeDetectorRef.markForCheck()
和之间有什么区别ChangeDetectorRef.detectChanges()
?
我只在SO上找到了关于NgZone.run()
这两个函数之间的差异的信息,但不是这两个函数之间的区别.
对于仅提及文档的答案,请说明一些实际场景,以选择其中一个.
我正在构建单页面应用程序并遇到防伪令牌问题.
我知道为什么问题发生我只是不知道如何解决它.
发生以下情况时,我收到错误消息:
防伪令牌适用于用户"",但当前用户是"用户名"
发生这种情况的原因是因为我的应用程序是100%单页,并且当用户通过ajax帖子成功登录时/Account/JsonLogin
,我只是使用从服务器返回的"已验证视图"切换出当前视图但不重新加载页.
我知道这就是原因,因为如果我在步骤3和4之间简单地重新加载页面,就没有错误.
所以似乎@Html.AntiForgeryToken()
在加载的表单中仍然为旧用户返回一个令牌,直到重新加载页面.
如何更改@Html.AntiForgeryToken()
为新的经过身份验证的用户返回令牌?
我注入了新的GenericalPrincipal
带有自定义IIdentity
每个Application_AuthenticateRequest
这样的时候@Html.AntiForgeryToken()
被调用HttpContext.Current.User.Identity
,其实我与自定义标识IsAuthenticated
属性设置为true,但@Html.AntiForgeryToken
似乎仍然呈现为老用户令牌,除非我做一个页面重新加载.
有人可以说明使用<ng-container>
和<ng-template>
元素之间的区别吗?
我找不到文档NgContainer
,也不太了解模板标签之间的区别.
每个代码示例都会有很大帮助.
实际上有什么区别:
this.HasRequired(a => a.Something)
.WithMany()
.Map(a => a.MapKey("SomethingId"));
Run Code Online (Sandbox Code Playgroud)
和
this.HasRequired(a => a.Something)
.WithMany()
.HasForeignKey(a => a.SomethingId);
Run Code Online (Sandbox Code Playgroud) 我一直在浏览下划线文档,但我似乎无法找到一个方法(或嵌套方法调用)来执行以下转换:
假设我有以下Javascript数组:
[{ "name" : "sEcho", "value" : 1},{ "name" : "iColumns", "value" : 12}, ... ]
Run Code Online (Sandbox Code Playgroud)
我需要将其转换为以下对象:
{
sEcho: 1,
iColumns: 12,
...
}
Run Code Online (Sandbox Code Playgroud)
我使用underscore.js是有原因的,所以它必须是一个班轮.
在最新的beta 2版本中,我遇到了跨域POST请求命中Api控制器的问题.
Chrome(和其他浏览器)吐出:
OPTIONS http://api.hybridwebapp.com/api/values 400 (Bad Request)
POST http://api.hybridwebapp.com/api/values 404 (Not Found)
Run Code Online (Sandbox Code Playgroud)
它可能与此问题有关,但我已应用该解决方法和其他一些其他修补程序,例如web.config 添加
我一直在用这个敲打我的脑袋一段时间,所以我创建了一个解决方案来完全重现问题.
加载Web应用程序将有2个按钮,一个用于GET,一个用于POST,响应将出现在按钮旁边.GET有效.无法获得POST以成功返回.
我能够从Fiddler那里得到一个提示,但这没有任何意义,因为如果你看一下它的反应就包含了Access-Controll-Allow-Origin标题中的域:
解决方案中有一个名为"ConfigurationScreenshots"的文件夹,其中包含IIS配置(网站绑定)和项目属性配置的一些屏幕截图,以便尽可能轻松地帮助我:)
编辑:不要忘记将此条目添加到主机文件(%SystemRoot%\ system32\drivers\etc):
127.0.0.1 hybridwebapp.com api.hybridwebapp.com
Run Code Online (Sandbox Code Playgroud)
**状态:**似乎Chrome之类的某些浏览器允许我继续POST,无论OPTIONS响应中的错误消息如何(而其他像Firefox则没有).但我不认为这解决了.
查看它有的OPTIONS请求的Fidler截图
Access-Control-Allow-Origin:http://hybridwebapp.com
然而错误:
原产地http://hybridwebapp.com是不允许的
这完全是矛盾的,好像它忽略了标题.
我有以下 d3/d3fc 图表
https://codepen.io/parliament718/pen/BaNQPXx
该图表具有主区域的缩放行为和 y 轴的单独缩放行为。可以拖动 y 轴以重新缩放。
我无法解决的问题是,在拖动 y 轴以重新缩放然后平移图表后,图表中有一个“跳跃”。
显然,这 2 个缩放行为有断开连接,需要同步,但我正在绞尽脑汁试图解决这个问题。
const mainZoom = zoom()
.on('zoom', () => {
xScale.domain(t.rescaleX(x2).domain());
yScale.domain(t.rescaleY(y2).domain());
});
const yAxisZoom = zoom()
.on('zoom', () => {
const t = event.transform;
yScale.domain(t.rescaleY(y2).domain());
render();
});
const yAxisDrag = drag()
.on('drag', (args) => {
const factor = Math.pow(2, -event.dy * 0.01);
plotArea.call(yAxisZoom.scaleBy, factor);
});
Run Code Online (Sandbox Code Playgroud)
所需的行为是缩放、平移和/或重新缩放轴,以始终从上一个操作完成的位置应用变换,而不会出现任何“跳跃”。
我正在尝试生成数据库中所有数据的脚本,因此我可以将数据移动到另一台服务器上的相同数据库.在SQL Server 2012中,我右键单击源数据库
任务>生成脚本>脚本整个数据库和所有数据库对象>高级>脚本的数据类型:仅限数据
这给了我一个关于Cyclic依赖的错误.如果我将数据类型更改为脚本到架构和数据,它会生成正常的.如何解决此问题仅适用于数据?
操作结果从MyDatabase获取对象列表失败
详细报告:
Microsoft.SqlServer.Management.SqlScriptPublish.SqlScriptPublishException:脚本编写对象时发生错误.---> Microsoft.SqlServer.Management.Smo.SmoException:找到循环依赖项.在Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.DependencyGraphTraversal(Int32 num,Dictionary
2 dictionary, List
1 sortedList,HashSet1 visited, HashSet
1 current)在Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.DependencyGraphTraversal(Int32 num,Dictionary2 dictionary, List
1 sortedList,HashSet1 visited, HashSet
1 current)在Microsoft .SqlServer.Management.Smo.SmoDependencyOrderer.DependencyGraphTraversal(的Int32 NUM,字典2 dictionary, List
1排序列表,HashSet的1 visited, HashSet
1电流)Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.DependencyGraphTraversal(的Int32 NUM,字典2 dictionary, List
1排序列表,HashSet的1 visited, HashSet
1电流)Microsoft.SqlServer2 dictionary) at Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.SortDataSet(DataSet ds) at Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.SortDataSet(List
.Management.Smo.SmoDependencyOrderer.SortDictionary (Dictionary 1 objectList,Dictionary2 idDictionary, DataSet ds) at Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.ExecuteQueryUsingTempTable(List
1 objectList,List 1 urns1 list, String query) at Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.ResolveTableOnlyDependencies() at …
我正在寻找两个角度指令,一个父指令和一个子指令,来创建可排序和可复制的小部件.预期的标记是:
<div class="widget-container" data-sortable-widgets>
<section class="widget" data-cloneable-widget></section>
<div>
Run Code Online (Sandbox Code Playgroud)
但是,child指令似乎在父元素之前执行,在某个元素可用之前(由父元素添加):
function SortableWidgetsDirective() {
return {
priority: 200,
restrict: 'A',
link: function ($scope, element, attrs) {
element.find(".widget header").append($("<div class='widget-controls'></div>"));
element.sortable({ });
}
};
}
function CloneableWidgetDirective() {
return {
priority: 100,
restrict: 'A',
link: function ($scope, element, attrs) {
// This directive wrongfully executes first so widget-controls is no available
element.find("header .widget-controls").append($("<div class='clone-handle'></div>"));
}
};
}
Run Code Online (Sandbox Code Playgroud)
正如你所看到我尝试设置优先级但我认为因为它们在不同的元素上,它不起作用.
如何让父项先执行?
我正在重写整个问题因为我意识到原因,但仍然需要一个解决方案:
我在Hangfire中有一个经常性的工作,每分钟运行并检查数据库,可能更新一些东西,然后退出.
我将dbcontext注入包含job方法的类中.我注册这个dbcontext以使用以下注入
builder.RegisterType<ApplicationDbContext>().As<ApplicationDbContext>().InstancePerLifetimeScope();
Run Code Online (Sandbox Code Playgroud)
但是,每次作业运行时,Hangfire似乎都不会创建单独的生命周期范围,因为构造函数只会被调用一次,尽管每分钟调用一次作业方法.
这给我带来了问题.如果用户更新了数据库中的某些值(dbcontext被注入其他地方并用于更新值),则仍在使用的上下文Hangfire开始返回已更改的过时值.