我正在将功能构建到用户可以多次执行的网页上.通过用户的操作,使用ko.applyBindings()创建对象/模型并将其应用于HTML.
数据绑定HTML是通过jQuery模板创建的.
到现在为止还挺好.
当我通过创建第二个对象/模型并调用ko.applyBindings()重复此步骤时,我遇到两个问题:
为了解决这个问题,在第一次传递之后,我调用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演示.
我正在尝试使用此 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 认为该名称已被使用呢?
我正在尝试使用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的回答的评论,我添加了以下内容:
如您所见,这仍然存在问题.
我正在寻找一个可靠的jQuery模板引擎.
我一直在使用jquery.tmpl.js进行开发,尽管我知道它被放弃了.我已经能够实现我想要的功能,但对其跨浏览器的可靠性有一些轻微的怀疑.
首先,IE7似乎被标记为一个问题领域,我现在不想进一步深入,直到我更有信心它最终可以纳入生产解决方案.
关于模板的StackOverflow问题有一个健康的讨论,但遗憾的是现在这已经过时了.
jquery.tmpl.js的github存储库说它已被移动到jQueryUI,但jQueryUI站点没有提到模板.
那么有没有人对jQuery中的模板有任何良好的体验和/或可以指向一个可靠的解决方案?
我已经使用 Azure 存储资源管理器几年了,没有出现任何问题。今天早上我打开它并被告知我需要重新进行身份验证,所以我点击了该Reauthenticate now链接。
这个窗口打开了...
与此同时,一个浏览器窗口打开,其中的 URL 开头为...
https://localhost:61204/?code=
...并且显示的是...
我能做些什么吗?我还能如何重新验证?
更新
看来这个问题比我之前想象的更进一步:我也无法登录到Azure CLI或运行任何需要身份验证的Powershell脚本。在所有情况下,我都会看到一个显示 的网页ERR_SSL_PROTOCOL_ERROR。
更新 2
看起来 Firefox 对问题给出了更多解释:
果然,如果我将默认浏览器更改为 Firefox,那么该过程就可以正常工作。
我有一个视图模型,其中包含一组对象,'文件'.
显然这与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) 我有一个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) 几个星期前,我正在进行单元测试,他们正在按预期进行构建和运行.
我去度假了一个星期,今天早上启动了我的机器,没有对单元测试项目进行任何代码更改,测试不再运行.
当我说"测试不再运行"时,我并不是说它们失败了; 他们实际上不会跑.
我试图运行或调试一个特定的测试,我试图运行或调试所有测试,我已经尝试从每个测试方法名称旁边的Resharper图标,我已经尝试从TEST菜单项,我已经从"单元测试会话"窗口尝试了...所有发生的事情是"单元测试会话"窗口从右侧滑入,所有测试都说"待定"......然后什么都没有.
"输出"窗口中也没有消息.
该项目没有任何问题.我已经尝试过清理解决方案并进行重建,但这没有任何改变.此外,这不仅仅是几周前我正在进行的测试,而是我的UnitTests项目中的所有测试.
一位同事可以进行测试.他遇到了我没有的各种Resharper消息,但他仍然可以进行测试.
唯一的区别是我在尝试运行测试之前安装了VS2012.2更新.
有没有人有任何想法为什么这些测试显然不会运行?
我正在尝试在 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) 我们有一个遗留的 .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
azure ×3
c# ×2
knockout.js ×2
azure-cli ×1
javascript ×1
jquery ×1
jquery-ui ×1
jsrender ×1
odata ×1
react-router ×1
reactjs ×1
sql ×1
templates ×1
typescript ×1
unit-testing ×1
web-config ×1