如果这是一个简单的误解,我还没有完全理解承诺,所以道歉.
我有一个删除页面上的项目的功能,但我有一个特定的行为取决于页面的状态.Psuedo代码方式它是这样的:
Does the page have changes?
If yes - prompt to save changes first
If yes - save changes
If no - exit function
If no - continue
Prompt to confirm delete
If yes - delete item and reload data
If no - exit function
Run Code Online (Sandbox Code Playgroud)
希望这是有道理的.基本上如果有变化,必须先保存数据.然后,如果数据已保存,或者如果没有开始更改,则提示用户确认删除.问题是我正在使用durandal和微风,我似乎无法将他们正确归还的承诺链接起来.
我的功能目前看起来像这样,我知道这是错误的,但我正在努力找出解决问题的方法.
if (this.hasChanges()) {
app.showMessage('Changes must be saved before removing external accounts. Would you like to save your changes now?', 'Unsaved Changes...', ['Yes', 'No'])
.then(function (selectedOption) {
if (selectedOption === 'Yes') {
return …Run Code Online (Sandbox Code Playgroud) 所以我正在整合SignalR和HotTowel,虽然我认为这是如何与Durandal本身集成的问题.
问题是我有很多观点.其中一些视图我想响应SignalR消息.考虑到在调用SignalR的集线器启动方法之前必须启动SignalR事件,问题是如何进行此集成.
举个例子,我有view1和view2.我希望每个人在接收到SignalR消息时和在该视图的上下文中做某事(所以让我们说以某种方式更新DOM).这显然是SPA,因此为每个视图调用SignalR启动方法似乎是一个坏主意,因此在启动时启动SignalR听起来像正确的计划,但在那时我的视图可能没有被加载,我仍然如何确保我的活动有适合页面的上下文.
这是基于我的理解,即在调用start之前必须注册SignalR的所有事件.任何想法聪明的StackOverflow人?
编辑以扩展问题
该网站的一部分涉及上传文件以进行解析和处理以导入数据库.我创建了一个视图,其中选择并上传文件(使用FineUploader)到WebApiController.控制器执行检查上载文件的基本步骤,然后启动异步任务以实际执行解析和处理,同时立即返回基本的"Yep that uploaded fine"消息.
这会导致"正在进行"文件列表刷新,并且文件显示为"已上载"状态.在发生异步任务时,将解析文件,然后针对规则系统进行处理,最后将其导入另一个后端数据存储.当每个状态发生变化时,SignalR会向客户端发送消息以通知他们这些更改,从而根据文件名更新状态.为了实现这一点,我必须在SignalR中收到一个函数.甚至需要对我的视图(实际上是viewmodel)进行某种引用,以便它可以更新正确的值.
由于SignalR应该通过调用hub.Start()启动一次,我试图在"启动"阶段执行此操作.但是,当我的SPA启动时,该视图尚未加载,因此也没有该视图模型,因此我负责初始化SignalR的函数无法理解它必须更新的视图/视图模型.
我在使用SignalR时看到的示例显示它在一个视图中使用,但如果您在多个视图中需要它,那确实无法正常工作(您不能只是继续调用hub.start()吗?)
对不起,如果这仍然没有意义,我会发布一些代码或其他东西.
我最近更新了所有我的nuget软件包到最新的EF6,breeze 1.4.5,system.web.http.odata 5.0.0.0,以及所有其他可用的好位.
现在,如果一个查询包含像xyz这样的扩展,我会收到如下错误:
A first chance exception of type 'Microsoft.Data.OData.ODataException' occurred in System.Web.Http.OData.dll
Additional information: The request includes a $expand path which is too deep. The maximum depth allowed is 2. To increase the limit, set the 'MaxExpansionDepth' property on QueryableAttribute or ODataValidationSettings.
Run Code Online (Sandbox Code Playgroud)
我查看了建议的修复程序.如果我在查询的breeze'端点'上添加Queryable属性,它似乎会导致各种其他问题.我的猜测是它会干扰微风的预期行为,并以不同的方式格式化结果.
然后,我通过GlobalConfiguration.Configuration ...查看了使用HttpConfiguration EnableQuerySupport扩展方法,但似乎没有效果(请参阅支持OData查询选项)
有没有人知道如何更改默认的webapi行为?
谢谢.
我正在尝试开始使用Pex,我有一些代码,我希望它忽略测试.
我使用Configuration Section Designer插件为配置文件创建配置部分.不幸的是,生成的代码并不完美,因为它不会对空值和其他好的检查进行测试.但是,现在至少我希望在运行pex探索时忽略代码,因为我不能在未被覆盖的情况下更改代码,这是我们可以解决的已知错误.
我找到了PexInstrumentMarkedBy和PexCoverageFilterMarkedBy属性,看起来他们可以完成这项工作(用GeneratedCodeAttribute忽略代码),但据我所知,我需要将它们放在我的程序集中,因此引用了Pex框架在我的运作大会中......不会发生.
有没有人有更好的想法?
我正在尝试找到一种方法,在同一个锚标签上有一个attr(href)绑定和一个点击绑定,并将该功能绑定到点击以决定是否允许导航.
在简单的html中,这将是Something在这种情况下,如果函数decisionNavigation返回true,则会发生导航到'/',如果它是false,则导航将被阻止.
目前,如果我绑定了一个点击功能,导航就完全被阻止了.
使用knockout执行此操作的任何简单方法,还是需要类似自定义绑定的东西?
谢谢.
我需要找到一个可靠的解决方案,以使两个框架都能很好地协作。
使用materialize-css,他们的select元素使用jquery来应用值更改。但是,那并不会触发aurelia看到变化。使用...的技术...
$("select")
.change((eventObject: JQueryEventObject) => {
fireEvent(eventObject.target, "change");
});
我可以触发aurelia看到的事件,但是,aurelia随后导致事件在更新绑定时再次被触发,并且我陷入无限循环。...堆栈溢出:D
在这方面,让两者共同发挥作用的最可靠方法是什么?
感觉这很简单,但我无法让它工作。
我想要实现的只是一个过滤后的嵌入资源列表。我尝试了各种方法,但似乎无法正确解决。
这是我认为正确的解决方案:
<ItemGroup>
<AllEmbeddedResources Include="@(EmbeddedResource)" Condition="$(FullPath.Contains('Change')"/>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
编辑...澄清一下,结果是没有条件的,列表是所有嵌入的资源,有条件,组为空。
我已经在目标的内部和外部尝试过这个,并且我尝试在一个组中获取完整列表,然后在一个单独的组中进行过滤。我知道我只是误解了 msbuild 语法的一些基本部分,我似乎无法解决。期待看到我愚蠢的错误!
breeze ×2
durandal ×2
aurelia ×1
c# ×1
hottowel ×1
javascript ×1
knockout.js ×1
msbuild ×1
odata ×1
pex ×1
q ×1
signalr ×1
unit-testing ×1