小编awj*_*awj的帖子

如何在Knockout.js中清除/删除可观察的绑定?

我正在将功能构建到用户可以多次执行的网页上.通过用户的操作,使用ko.applyBindings()创建对象/模型并将其应用于HTML.

数据绑定HTML是通过jQuery模板创建的.

到现在为止还挺好.

当我通过创建第二个对象/模型并调用ko.applyBindings()重复此步骤时,我遇到两个问题:

  1. 标记显示前一个对象/模型以及新对象/模型.
  2. 发生与对象/模型中的某个属性相关的javascript错误,尽管它仍然在标记中呈现.

为了解决这个问题,在第一次传递之后,我调用jQuery的.empty()来删除包含所有数据绑定属性的模板化HTML,这样它就不再存在于DOM中了.当用户启动第二次传递的过程时,数据绑定的HTML将重新添加到DOM.

但就像我说的那样,当HTML重新添加到DOM并重新绑定到新的对象/模型时,它仍然包含来自第一个对象/模型的数据,我仍然得到不会发生的JS错误在第一次通过期间.

结论似乎是Knockout坚持这些绑定属性,即使从DOM中删除了标记.

所以我正在寻找的是从Knockout中删除这些绑定属性的方法; 告诉淘汰赛,不再有可观察的模型.有没有办法做到这一点?

编辑

基本过程是用户上传文件; 服务器然后用JSON对象响应,数据绑定的HTML被添加到DOM,然后JSON对象模型绑定到这个HTML使用

mn.AccountCreationModel = new AccountViewModel(jsonData.Account);
ko.applyBindings(mn.AccountCreationModel);
Run Code Online (Sandbox Code Playgroud)

一旦用户在模型上做了一些选择,就会将相同的对象发回服务器,从DOM中删除数据绑定的HTML,然后我有以下JS

mn.AccountCreationModel = null;
Run Code Online (Sandbox Code Playgroud)

当用户希望再次执行此操作时,重复所有这些步骤.

我担心代码太"参与"了jsFiddle演示.

javascript knockout.js

113
推荐指数
5
解决办法
11万
查看次数

Azure 密钥保管库创建错误:VaultAlreadyExists - 我找不到现有保管库

我正在尝试使用此 CLI 命令在 Azure 中创建密钥保管库...

az keyvault create --location $location --name $keyVaultName --resource-group $resourceGroupMainName --output none
Run Code Online (Sandbox Code Playgroud)

但这会返回错误...

(VaultAlreadyExists) 文件库名称“[ $keyVaultName 的值]”已在使用中。Vault 名称是全局唯一的,因此该名称可能已被使用。如果您确定保管库名称未被占用,则可能最近删除了同名的保管库,但在将其置于可恢复状态后未将其清除。如果保管库处于可恢复状态,则需要在重新使用该名称之前清除保管库。有关软删除和清除保管库的更多信息,请访问此链接 https://go.microsoft.com/fwlink/?linkid=2147740

所以我运行了这两个...

az keyvault list
az keyvault list-deleted
Run Code Online (Sandbox Code Playgroud)

并且$keyVaultName没有出现在这两个列表中。我已经要求一位同事仔细检查这些结果,但它确实没有出现。我还查看了门户中的“管理已删除的保管库”边栏选项卡,它与 CLI 的结果相匹配 - 它不在那里。

我也尝试过使用recover该名称的密钥保管库......

(DeletedVaultNotFound) 指定的已删除保管库“[ $keyVaultName 的值]”不存在。

...以及purge具有该名称的密钥保管库...

未找到名称为 [ $keyVaultName 的值]的已删除保管库或 HSM

那么为什么 Azure 认为该名称已被使用呢?

azure azure-cli azure-keyvault

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

如何在TypeScript中声明react-router参数

我正在尝试使用Typescript以一种接受参数的方式设置react-router.

在我的render元素中我有

<Route path="/show/:id" component={TestComp} />
Run Code Online (Sandbox Code Playgroud)

我定义TestComp

const TestComp = ({ match }) => (
    <div>
        <h2>Showing specified ID: {match.params.id}</h2>
    </div>
)
Run Code Online (Sandbox Code Playgroud)

但是,VS Code强调了match参数(在声明中TestComp)并告诉我

绑定元素'match'隐式具有'any'类型.

它无法编译.

任何人都可以告诉我match应该声明什么类型?我已经尝试RouteProps但是这也不起作用.查看index.d.ts,我认为它被定义为match<P>但我不确定如何将参数声明为泛型类型.

更新
基于对@ TarasPolovyi的回答的评论,我添加了以下内容:

在此输入图像描述

如您所见,这仍然存在问题.

typescript reactjs react-router

10
推荐指数
4
解决办法
7009
查看次数

对当前jQuery模板解决方案的建议?

我正在寻找一个可靠的jQuery模板引擎.

我一直在使用jquery.tmpl.js进行开发,尽管我知道它被放弃了.我已经能够实现我想要的功能,但对其跨浏览器的可靠性有一些轻微的怀疑.

首先,IE7似乎被标记为一个问题领域,我现在不想进一步深入,直到我更有信心它最终可以纳入生产解决方案.

关于模板的StackOverflow问题有一个健康的讨论,但遗憾的是现在这已经过时了.

jquery.tmpl.js的github存储库说它已被移动到jQueryUI,但jQueryUI站点没有提到模板.

那么有没有人对jQuery中的模板有任何良好的体验和/或可以指向一个可靠的解决方案?

jquery templates jquery-ui jquery-templates jsrender

9
推荐指数
1
解决办法
1434
查看次数

验证我的 Azure 帐户会打开安全性无效的本地主机网页

我已经使用 Azure 存储资源管理器几年了,没有出现任何问题。今天早上我打开它并被告知我需要重新进行身份验证,所以我点击了该Reauthenticate now链接。

这个窗口打开了...

在此输入图像描述

与此同时,一个浏览器窗口打开,其中的 URL 开头为...

https://localhost:61204/?code=

...并且显示的是...

在此输入图像描述

我能做些什么吗?我还能如何重新验证?

更新
看来这个问题比我之前想象的更进一步:我也无法登录到Azure CLI或运行任何需要身份验证的Powershell脚本。在所有情况下,我都会看到一个显示 的网页ERR_SSL_PROTOCOL_ERROR

更新 2
看起来 Firefox 对问题给出了更多解释:

在此输入图像描述

果然,如果我将默认浏览器更改为 Firefox,那么该过程就可以正常工作。

authentication azure azure-storage azure-storage-account

9
推荐指数
1
解决办法
4283
查看次数

Knockout - 从ViewModel中删除项目不会从DOM中删除

我有一个视图模型,其中包含一组对象,'文件'.

显然这与DOM绑定在一起.

当我从'Files'集合中删除一个项目时,我希望更新DOM以反映这一点,但它不会更新.

这是我用来从'Files'集合中删除项目的JS.

this.Delete = function(id) {
    for (var f = 0; f < this.Files.length; f++) {
        if (this.Files[f].ID() == id) {
            this.Files.splice(f, 1);
        }
    }
}.bind(this);
Run Code Online (Sandbox Code Playgroud)

如果我在调用Delete(id)后将集合的长度打印到控制台,我可以看到一个项目被删除.

那么为什么DOM不会更新?

如果我调用ko.applyBindings(...然后它更新,但我的理解是每次视图模型更新时我都不应该调用它.

那么我可能做错了什么?

此外,我已经尝试使用Files作为observableArray和标准数组,没有任何区别.

更新:这是视图模型的定义(嗯......相关部分,无论如何)

function Files(files) {

    var self = this;

    self.Files = ko.observableArray([]);

    this.Delete = function(id) {
        // find which index the specified ID exists at
        for (var f = 0; f < this.Files().length; f++) {
            if (this.Files()[f].ID() == id) {
                this.Files().splice(f, 1);
            } …
Run Code Online (Sandbox Code Playgroud)

knockout.js

8
推荐指数
1
解决办法
2780
查看次数

在现有Web API中支持ODataQueryOptions

我有一个Web API项目已经使用了几年没有OData支持,只有标准的URL参数.

我现在希望为此API添加OData支持,但由于API不是基于可查询模型构建的,因此目的是接收ODataQueryOptions<T>对象并将其传递给存储库.

我能找到的关于支持OData的所有内容都假定我有一个可查询的模型或过于简单化,只是告诉我如何理解ODataQueryOptions对象.因此,我无法启动并运行简单的方法.

这就是我现在拥有的.

[Route("test")]
[HttpGet]
[EnableQuery]
public IHttpActionResult Test(ODataQueryOptions<TestOptions> options)
{
    var settings = new ODataValidationSettings {
            AllowedFunctions = AllowedFunctions.None,
            AllowedLogicalOperators = AllowedLogicalOperators.Equal,
            AllowedArithmeticOperators = AllowedArithmeticOperators.None,
            AllowedQueryOptions = AllowedQueryOptions.Filter
        };
    try
    {
        options.Validate(settings);
    }
    catch (ODataException exception)
    {
        return BadRequest(exception.Message);
    }

    var binaryOperator = options.Filter?.FilterClause?.Expression as BinaryOperatorNode;
    if (binaryOperator != null)
    {
        var property = binaryOperator.Left as SingleValuePropertyAccessNode ?? binaryOperator.Right as SingleValuePropertyAccessNode;
        var constant = binaryOperator.Left as ConstantNode ?? binaryOperator.Right as ConstantNode;

        if (property?.Property …
Run Code Online (Sandbox Code Playgroud)

c# odata asp.net-web-api

7
推荐指数
1
解决办法
3465
查看次数

VS2012不运行单元测试

几个星期前,我正在进行单元测试,他们正在按预期进行构建和运行.

我去度假了一个星期,今天早上启动了我的机器,没有对单元测试项目进行任何代码更改,测试不再运行.

当我说"测试不再运行"时,我并不是说它们失败了; 他们实际上不会跑.

我试图运行或调试一个特定的测试,我试图运行或调试所有测试,我已经尝试从每个测试方法名称旁边的Resharper图标,我已经尝试从TEST菜单项,我已经从"单元测试会话"窗口尝试了...所有发生的事情是"单元测试会话"窗口从右侧滑入,所有测试都说"待定"......然后什么都没有.

"输出"窗口中也没有消息.

该项目没有任何问题.我已经尝试过清理解决方案并进行重建,但这没有任何改变.此外,这不仅仅是几周前我正在进行的测试,而是我的UnitTests项目中的所有测试.

一位同事可以进行测试.他遇到了我没有的各种Resharper消息,但他仍然可以进行测试.

唯一的区别是我在尝试运行测试之前安装了VS2012.2更新.

有没有人有任何想法为什么这些测试显然不会运行?

unit-testing visual-studio-2012

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

使用“SELECT INTO”和 Azure SQL 从另一个数据库复制数据

我正在尝试在 Azure 上自动初始化 SQL DB。对于某些(查找)表,每次初始化时都需要将数据从源 DB 复制到新 DB 中。

为此,我执行一个查询,其中包含

SELECT * INTO [target_db_name]..[my_table_name] FROM [source_db_name].dbo.[my_table_name]
Run Code Online (Sandbox Code Playgroud)

此时抛出一个异常告诉我

此版本的 SQL Server 不支持在“source_db_name.dbo.my_table_name”中引用数据库和/或服务器名称。

对此进行研究后,我发现现在可以引用另一个 Azure SQL DB,前提是它已配置为外部数据源。[这里这里]

因此,在我的目标数据库中,我执行了以下语句:

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';

CREATE DATABASE SCOPED CREDENTIAL cred  
WITH IDENTITY = '<username>',
SECRET = '<password>';

CREATE EXTERNAL DATA SOURCE [source_db_name]
WITH
(
    TYPE=RDBMS,
    LOCATION='my_location.database.windows.net',
    DATABASE_NAME='source_db_name',
    CREDENTIAL= cred
);

CREATE EXTERNAL TABLE [dbo].[my_table_name](
    [my_column_name] BIGINT NOT NULL
)
WITH
(
    DATA_SOURCE = [source_db_name],
    SCHEMA_NAME = 'dbo', …
Run Code Online (Sandbox Code Playgroud)

sql azure azure-sql-database

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

在子应用程序中阻止 web.config 继承

我们有一个遗留的 .NET 解决方案,它结合了 MVC 和 WebForms 的东西,以及一些 Web API 项目作为网站根目录下的应用程序。显然,这些 Web API 应用程序将继承网站的 web.config 设置。

我们还有另一个项目——一个有界上下文——用于 SSO 身份验证,它位于同一个根文件夹内,因此也继承了网站的 web.config 设置。这个有界上下文应用程序是用 .NET Core 构建的。

- wwwroot   // .NET Framework
    - API 1 // .NET Framework
    - API 2 // .NET Framework
    - ...
    - SSO / authentication // bounded context, built in .NET Core
Run Code Online (Sandbox Code Playgroud)

我们最近开始使用 Azure Key Vault 来存储我们的机密,为了在本地处理这些机密,我们使用了 secrets.xml 文件。所以根网站的 web.config 看起来像这样......

<configSections>
  <section name="configBuilders" ... />
</configSections>  

<configBuilders>
  <builders>
    <add name="Secrets" optional="false" userSecretsFile="~\secrets.xml" [elided attributes] />
  </builders>
</configBuilders>

<appSettings …
Run Code Online (Sandbox Code Playgroud)

c# web-config subapplication secretsmanager asp-net-config-builders

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