小编ren*_*han的帖子

按下后退按钮后转到其他页面时,滚动位置不会重置

我在angularjs应用程序中滚动有问题.

目前它有2页:第一页是客户列表,您可以选择其中一个并查看其详细信息.第二个是公司列表,它的工作方式相同.

我正在使用面板在它们之间导航$location.path().该应用程序还有一个后退按钮,使用$window.history.back().

当您选择客户或公司列表中的某个项目,然后在按下该按钮后,您将返回到上一页(客户或公司列表)并恢复滚动位置.我正在使用标准$window.history.back()功能,没有实现任何自定义.

但这里出现问题:如果没有向任何方向滚动,只需转到另一个页面(到其他项目列表)滚动位置将不会重置.但如果你只是稍微滚动一下,它的位置就会重置.此外,如果你不使用后退按钮一切正常.

所以,问题是:在使用后转到另一页时我们如何重置滚动位置$window.history.back()

我也使用infinite-scroll插件,如果重要的话.但即使我关闭它,没有任何改变,所以我猜问题不在于插件.

javascript scroll infinite-scroll angularjs

19
推荐指数
1
解决办法
1233
查看次数

模拟拖放文件以在Protractor中上传

我想通过将文件拖到页面中的放置区来测试文件上传,但是我找不到一种方法来模拟从桌面文件夹中拖动文件.我设法找到的唯一方法是以下方法 -

desktop.browser.actions().dragAndDrop(elem,target).mouseUp().perform();(Protractor)
Run Code Online (Sandbox Code Playgroud)

但据我所知,它只拖动css元素.

javascript protractor e2e-testing angular

6
推荐指数
1
解决办法
3174
查看次数

在 ASP.NET MVC 中创建两条不会产生 404 错误的路由的问题

我正在尝试使用路由构建我的教程项目。我的主要目标是构建两条在任何情况下都不会产生 404 错误的路由。我的意思是,如果路径错误,我希望路由使用 /Home/Index 路径。我有以下两条路线 -

    routes.MapRoute("Default", "{controller}/{action}", 
                        new {controller = "Home", action = "Index"}
                        );

    routes.MapRoute("Second", "{*catchall}",
                        new {controller = "Home", action = "Index", id = UrlParameter.Optional}
                        );
Run Code Online (Sandbox Code Playgroud)

当我使用与第一条路线不匹配的不存在的路径时,它工作正常,就像这样 -

不存在的路径 1

但如果是这样,那么我有以下几点——

在此处输入图片说明

或者

在此处输入图片说明

我明白它发生的原因。但是目前,我只能设法找到“某种”解决方案。将以下代码添加到 web.config 文件 -

<customErrors mode="On">
      <error statusCode="404" redirect="~/Home/Index"/>
</customErrors>
Run Code Online (Sandbox Code Playgroud)

但是,我认为这不是解决此问题的最佳方法。因为,据我所知,它只是捕获所有错误并将其重定向到正确的路径,而不实际使用路由。所以我认为我不需要这种全局处理。

所以有人可以给我一个提示或为我提供一个很好的解决我的问题的方法。谢谢你。

c# asp.net-mvc routes web-config asp.net-mvc-routing

5
推荐指数
1
解决办法
1176
查看次数

如何使用ASP.NET Web API在Javascript后端使用JWT client_id

我正在尝试在项目中实现JWT授权.但是,为了成功获取令牌,我必须将client_id从AngularJS前端传递到ASP.NET Web API后端,据我所知它根本不安全.那么有人可以给我一个提示,告诉我在我的情况下应该做些什么.

在JS方面 -

var data = 'grant_type=password&username='
                    + loginData.Email + '&password=' + loginData.Password + '&client_id=' + client_id;
$http.post('/oauth2/token', data); //Code omitted
Run Code Online (Sandbox Code Playgroud)

在大多数情况下,我正在使用本指南创建Jwt授权.除了我在一个域上有一个应用程序,所以这是我的Startup.cs的样子 -

public void Configuration(IAppBuilder app)
        {
            var config = new HttpConfiguration();               
            config.MapHttpAttributeRoutes();    
            ConfigureOAuth(app);    
            ConfigureValidationOAuth(app);
        }

private static void ConfigureOAuth(IAppBuilder app)
        {
            var oAuthServerOptions = new OAuthAuthorizationServerOptions
            {
                AllowInsecureHttp = true,
                TokenEndpointPath = new PathString("/oauth2/token"),
                AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(30),
                Provider = new CustomOAuthProvider(),
                AccessTokenFormat = new CustomJwtFormat(ConfigurationManager.AppSettings["owin:issuer"])
            };

            app.UseOAuthAuthorizationServer(oAuthServerOptions);
        }   

 private static void ConfigureValidationOAuth(IAppBuilder app)
    { …
Run Code Online (Sandbox Code Playgroud)

c# asp.net jwt angularjs asp.net-web-api2

5
推荐指数
1
解决办法
570
查看次数

在多线程应用程序中冻结

我正在尝试创建一个WinForms多线程应用程序,它在两个不同的线程中无休止地生成异常.

一个线程使用GenerateDllNotFoundExc()方法,另一个使用另一个方法,它基本上是相同的,但只是生成另一个异常.

然后,它将异常消息写入队列,然后从队列写入文本框.

然而,GUI总是在1秒后冻结,它会将消息写入文本框并冻结.我尝试调试它,代码本身工作,但GUI冻结.

有人可以给我一个关于我做错的提示吗?

private delegate void GetQueueElem();
private event GetQueueElem getqueuelem;     

private void GenerateDllNotFoundExc()
{
    Action<String> addelem = new Action<String>(AddToQueue);

    string exdll = string.Empty;

    while (shouldgeneratemore)
    {
        try 
        {
            throw new DllNotFoundException();
        }
        catch (Exception ex) 
        {
            exdll = ex.Message;
        }

        this.Invoke(addelem, exdll);
    }
}

private void AddToQueue(string exmess)
{            
    lock (lockobject)            
        queue.Enqueue(exmess);

    getqueuelem.Invoke();
}        

private void AddToTextBox()
{           
     while (queue.Count > 0)
     {
         string s = queue.Dequeue() +"\t" + Thread.CurrentThread.Name 
             + "\t" + Thread.CurrentThread.ManagedThreadId + …
Run Code Online (Sandbox Code Playgroud)

c# multithreading thread-safety winforms

2
推荐指数
1
解决办法
741
查看次数