小编Hie*_*yen的帖子

JSDoc:如何记录混合了动态和固定属性的对象?

假设我有一个像这样的函数:

function validator(obj){
  const ret = {};

  for (const key in obj){
    // Returns a boolean
    result = validate(key, obj[key]);

    if (result !== true)
      ret.error = true;

    ret[key] = result;
  }

  return ret;
}
Run Code Online (Sandbox Code Playgroud)

这个函数将返回一个对象,对象的内容根据传递给函数的参数动态填充。

我可以像这样记录函数:

/**
 * @param {Object.<string, *>} obj
 * @returns {Object.<string, boolean>}
 */
Run Code Online (Sandbox Code Playgroud)

但它没有记录.error也将返回布尔值的动态属性。

如果它会返回,我可以简单地写:

/**
 * @param {Object.<string, *>} obj
 * @returns {{error: boolean}}
 */
Run Code Online (Sandbox Code Playgroud)

但是现在它没有记录动态属性。

我能想到的事情是这样的:

/**
 * @param {Object.<string, *>} obj
 * @returns {Object.<string, boolean>|{error: boolean}}
 */
Run Code Online (Sandbox Code Playgroud)

虽然它有效,但在我看来它在语法上并不正确。我不能使用,@typedef因为当我已经知道将使用什么属性时应该使用它。

我在 …

javascript comments jsdoc

13
推荐指数
1
解决办法
1361
查看次数

Webp 图像未通过 ASP.NET mvc 在谷歌浏览器上显示

我一直在尝试在我的网站上使用 Webp 图像,但是它们会在所有浏览器上显示为损坏的图像。

我已经尝试过dejanstojanovic的解决方案(我没有完全明白那里发生了什么,虽然我确实明白它正在检查浏览器是否与 webp 兼容,然后发送 webp 版本,否则它发送一个 png 或 jpeg版本)但是,这不起作用。同样,我尝试了deanhume的解决方案,但同样,这也不起作用。两个代码都返回了一个 chrome 应该支持的 webp 文件,但是页面上有一个损坏的图像。我通过将 png 文件和 webp 文件放在同一文件夹中并同时显示它们来检查以确保它不是路径的错误。png 文件运行良好,但是缺少 webp 文件。此外,如果我使用原始 HTML,则 webp 文件也可以使用,只是不适用于 ASP.NET。

_layout.cshtml

        <h5 class="footer-header">Contact Info</h5>
        <p class="footer-text">Contact us if you want a custom made dress, or just want to know where your package might be.</p>
        <div class="row">
            <div class="col-md-1">
                <img style="height:50px; width:50px" src="~/Images/LocationPin100h.webp" />
                <img style="height:50px; width:50px" src="~/Images/LocationPin100h.png" />
            </div>
        </div>
Run Code Online (Sandbox Code Playgroud)

视图文件夹中的 web.config

<system.webServer>
    <handlers>
      <remove name="BlockViewHandler"/>
      <add name="BlockViewHandler" path="*" verb="*" …
Run Code Online (Sandbox Code Playgroud)

c# asp.net asp.net-mvc webp

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

调整垫形场角材料的高度

我在简单调整包含我的自动完成输入的mat-form-field时遇到了一个问题。从图像中可以看到它是否超出了垫子工具栏的高度,但是我还没有找到一种简单的方法来调整整个输入的高度,以便它可以停留在工具栏区域内。宽度工作正常。身高没有。

工具栏外部输入

在此处输入图片说明

我的html代码如下:

 <mat-toolbar  >
      <span style="width:200px">Test</span>
         <label>{{prodPointId}}</label>
        <form class="example-form"  >
            <mat-form-field  appearance="outline"  margin=" 10px" class="example-full-width searchField" >
                <mat-label>Search...</mat-label>

              <input type="text"   matInput [formControl]="myControl" [matAutocomplete]="auto" [(ngModel)]="value" >
              <button mat-button *ngIf="value" matSuffix mat-icon-button aria-label="Clear" (click)="value=''">
                  <mat-icon>close</mat-icon>
                </button>
              <mat-autocomplete #auto="matAutocomplete" [displayWith]="displayFn">
                <mat-option  
                    *ngFor="let option of filteredOptions | async" 
                    [value]="option.prodPointName" 
                    (click)="pointSelected(option.prodPointId)" 
                    [routerLink]="['/coredata', option.prodPointId]" >
                    <mat-icon>home</mat-icon>
                    {{option.prodPointCode}} : {{option.prodPointName}} 
                </mat-option>
              </mat-autocomplete>              
            </mat-form-field>
          </form>                  
  </mat-toolbar>
Run Code Online (Sandbox Code Playgroud)

当我拉起chrome dev工具时,我尝试使用div.mat-form-field和其他几个选项来调整CSS在组件中的高度,但是似乎没有任何效果。在查看Angular Material的文档时,我没有发现任何东西可以向我展示如何控制这种简单的样式调整。我想念什么。它是如此简单,我只是想得太多吗?谢谢!

angular-material angular

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

在Spring中什么时候应该使用@Component?

从软件设计的角度来看,什么时候应该使用@Component而不是传统的Java类(需要通过“ new”显式实例化)?例如,如果我们需要创建以下模式之一的类:

  • 适配器

  • 正面

  • 战略

  • 译者

类是否应该具有@Component注释(或任何Spring衍生注释,例如@Repository/ @Controller/ @Service)?

java architecture spring

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

Angular:每个组件一个模块:反模式?

所以我遇到了一种做法,人们会为每个具有服务依赖关系的组件创建一个模块。这样,当有人想要使用给定的组件时,他们不必通读代码来查看要添加到给定模块的提供程序。这是反模式吗?它会导致性能问题还是什么?

对于给定模块中应该有多少个组件/指令/提供者/等,是否有一些关于下/上限的推荐指南?是否对 angular/angularJs 生态系统进行了测试,其中包含 100 个模块?相比之下,如果只是常规组件都捆绑在 20 左右的模块中呢?

performance angularjs ng-modules angular

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

如何在signalR hub web api .net core中从用户那里获得声明

我想为我的 Web 项目添加聊天实时功能。我正在使用 asp.net SignalR 2.4 来实现该功能。但是我很难从集线器类中的不记名令牌中获取 UserId。

我使用 angular 7 从客户端提供令牌,我可以通过集线器类中的查询字符串获取该令牌。

我可以使用以下方法轻松地在我的控制器之一中获取 UserId:

var userId = User.Claims.First(c => c.Type == "UserID").Value;
Run Code Online (Sandbox Code Playgroud)

但是在集线器类中,用户始终为空 来自集线器类的代码:

public override Task OnConnectedAsync()
{
    var identity = (ClaimsIdentity)Context.User.Identity;
    var connectionId = Context.ConnectionId;
    var query = Context.GetHttpContext().Request.Query;
    var token = query["access_token"].ToString();
    return base.OnConnectedAsync();
}
Run Code Online (Sandbox Code Playgroud)

来自客户端的代码使用 angular 7:

ngOnInit(): void {
    this.hubConnection = new signalR.HubConnectionBuilder()
      .withUrl('http://localhost:50792/chat',{
        accessTokenFactory: () => {
          return this.token;
        },
      } as signalR.IHttpConnectionOptions)
      .build();
    // this.hubConnection.Headers.Add("Authorization", "Bearer " +
this.token);
    this.hubConnection
      .start()
      .then(() => …
Run Code Online (Sandbox Code Playgroud)

token signalr asp.net-core angular

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

从支付网关重定向到 ASPX 时,Request.Form.Count 始终为 0

我正在将数据发送到 asp.net c# 中的支付网关。除了金额和其他参数之外,它还要求发送一个 url,以便接收支付网关以 post 方法发送的响应。因此,我发送一个 .aspx 页面作为返回 url,付款过程完成后,它会重定向到此页面,但Request.Form.Count页面加载时始终为 0,因此我无法获得发布的值。

我尝试使用简单的 php 页面来回显所有帖子变量,然后它工作正常并显示我想在 aspx 页面中捕获的所有帖子数据。当我检查浏览器时,我可以看到页面加载事件的 Request.Method 为 Get 而不是 POST。

我不能通过提供 url 来使用 aspx 页面来捕获从支付网关发布的数据来实现此目的吗?

    protected void Page_Load(object sender, EventArgs e)
    {

        lblAllFormItems.Text = "";
        lblAllFormKeys.Text = "";

        //Request.Form.Count = 0 , Not going inside loop
        foreach (string key in Request.Form)
        {
            string value = Request.Form.Get(key);

            if (value != String.Empty)
            {
                lblAllFormKeys.Text += "<br><b>" + key + "</b>";
                lblAllFormItems.Text += "<br>" + value;
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

c# asp.net payment-gateway

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

如何配置 jackson 将 Enum 转换为 JSON?

@AllArgsConstructor
@Getter    
public enum MemberType {
    INTERN("name_intern", 1),
    EMPLOYEE("name_employee", 10);

    private String name;
    private int workingMonth;
}
Run Code Online (Sandbox Code Playgroud)

这是我的枚举。我想将Enum类转换为JSON带有一些约束的字符串。

  1. 我希望 MemberType 与 Jackson 没有依赖关系
  2. 我想转换MemberType.INTERN{id:INTERN, name:"name_intern", workingMonth:10}.
  3. 我有很多枚举想要像上面那样进行转换。而且他们的财产数量也各不相同。
  4. 我想通过一个全局配置来解决这个问题。
  5. 我不想使用显式的 java 反射。

有没有一种解决方案可以满足上述限制呢?

java enums jackson spring-boot jackson-databind

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

Ckeditor 5 和 ASP.NET MVC 捆绑错误出现 NullReferenceException?

为了隔离任何问题以便能够重现该问题,我在 VS 2017 中使用 ASP.NET MVC 模板 (.NET Framework 4.6.1) 开始了一个全新的项目。

我将最新的ckeditor5添加到/Scripts/ckeditor5/ckeditor.js

在 BundleConfig.cs 中,我添加了以下内容:

bundles.Add(new ScriptBundle("~/bundles/ckeditor").Include(
"~/Scripts/ckeditor5/ckeditor.js"));
Run Code Online (Sandbox Code Playgroud)

在 _layout.cshtml 中,我有这个:

@Scripts.Render("~/bundles/ckeditor")
Run Code Online (Sandbox Code Playgroud)

当我运行该应用程序时,它给出“System.NullReferenceException”错误。看来微软的Ajax解析不喜欢ckeditor5??

在 Microsoft.Ajax.Utilities.JSParser.ParseObjectLiteralProperty(Boolean isBindingPattern)\r\n 在 Microsoft.Ajax.Utilities.JSParser.ParseObjectLiteral(Boolean isBindingPattern)\r\n 在 Microsoft.Ajax.Utilities.JSParser.ParseLeftHandSideExpression(Boolean isMinus) \r\n 在 Microsoft.Ajax.Utilities.JSParser.ParseUnaryExpression(Boolean& isLeftHandSideExpr, Boolean isMinus)\r\n 在 Microsoft.Ajax.Utilities.JSParser.ParseVarDecl(JSToken inToken)\r\n
在 Microsoft.Ajax.Utilities。 JSParser.ParseVariableStatement()\r\n 在 Microsoft.Ajax.Utilities.JSParser.ParseFunctionBody(块体)\r\n
在 Microsoft.Ajax.Utilities.JSParser.ParseFunction(FunctionType functionType, Context fncCtx)\r\n 在 Microsoft .Ajax.Utilities.JSParser.ParseLeftHandSideExpression(Boolean isMinus)\r\n 在 Microsoft.Ajax.Utilities.JSParser.ParseUnaryExpression(Boolean& isLeftHandSideExpr, Boolean isMinus)\r\n 在 Microsoft.Ajax.Utilities.JSParser.ParseArrayLiteral(Boolean isBindingPattern )\r\n 于

如果我忘记了 Bundle 并且我在 _Layout.cshtml 上硬编码了这样的路径,它会起作用:

<script src="~/Scripts/ckeditor5/ckeditor.js"></script>
Run Code Online (Sandbox Code Playgroud)

知道如何使捆绑包适用于 ckeditor5 吗?

c# asp.net-mvc ckeditor5

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

Angular - 如何从 prod 构建中排除延迟加载的模块?

我有一个用于演示目的的角度模块(DevShowcaseModule)。此模块不应包含在生产版本中。为了向最终用户隐藏此演示并防止生产中的演示代码错误。

环境:

  • 角度版本:7.2.5
  • 角 CLI:7.3.2

这是我的 app-routing.module.ts

{
    path: APP_NAV_ITEMS.DEV_SHOWCASE,
    canActivate: [ AuthGuard ],
    loadChildren: './_dev-showcase/dev-showcase.module#DevShowcaseModule',
}
Run Code Online (Sandbox Code Playgroud)

我试图从 tsconfig.json 中排除模块文件夹。但它不起作用,我仍然可以调用路由并加载演示模块。

{
  "compileOnSave": false,
  "compilerOptions": {
    "baseUrl": "./",
    "importHelpers": true,
    "outDir": "./dist/out-tsc",
    "sourceMap": true,
    "declaration": false,
    "module": "es2015",
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,

    "noUnusedLocals": true,
    "noUnusedParameters": true,

    "target": "es5",
    "typeRoots": [
      "node_modules/@types"
    ],
    "lib": [
      "es2018",
      "dom"
    ]
  },
  "exclude": [
    "app/_dev-showcase/*"

  ]
}
Run Code Online (Sandbox Code Playgroud)

知道如何正确地做到这一点吗?

谢谢!

production angular-cli angular angular-cli-v7

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