我有一个可以在页面上多次使用的指令.在这个指令的模板中,我需要为input-Element使用ID,所以我可以像这样"绑定"一个Label:
<input type="checkbox" id="item1" /><label for="item1">open</label>
Run Code Online (Sandbox Code Playgroud)
现在问题是,只要多次包含我的指令,ID"item1"就不再是唯一的,并且标签不能正常工作(点击时应选中/取消选中复选框).
这个问题是如何解决的?有没有办法为模板分配"命名空间"或"前缀"(就像asp.net与ctl00 ...-前缀一样)?或者我必须在每个id-Attribute中包含一个angular-Expression,它包含Scope中的指令ID +静态ID.就像是:
<input type="checkbox" id="{{directiveID}} + 'item1'" /><label for="{{directiveID}} + 'item1'">open</label>
Run Code Online (Sandbox Code Playgroud)
编辑:
我的指示
module.directive('myDirective', function () {
return {
restrict: 'E',
scope: true,
templateUrl: 'partials/_myDirective.html',
controller: ['$scope', '$element', '$attrs', function ($scope, $element, $attrs) {
...
} //controller
};
}]);
Run Code Online (Sandbox Code Playgroud)
我的HTML
<div class="myDirective">
<input type="checkbox" id="item1" /><label for="item1">open</label>
</div>
Run Code Online (Sandbox Code Playgroud) 我们有一个 Angular 14 Web 应用程序,它使用 Google Chrome 作为渐进式 Web 应用程序 (PWA) 安装在计算机上。在更新到 Chrome 111 之前,它运行良好,但现在,当双击该图标时,用户会被重定向到 chrome://app,并弹出一个窗口,显示“旧版本的 Chrome 应用程序在 2022 年 12 月之后将无法在 Linux 设备上打开。您可以检查是否有新版本可用。”。Linux 和 Windows 下都会发生这种情况。然后,一个链接建议将此 chrome 应用程序转换为 PWA,它已经应该是这样了。使用 Microsoft Edge 110 来安装 PWA 是可行的,因此这里双击直接打开应用程序。到目前为止,我在 Chrome 111 的发布描述中找不到任何线索可以解释为什么 PWA 没有被这样对待。清单文件看起来不错,证书也是如此。希望有人可以帮忙!
我希望双击该应用程序即可打开。相反,Chrome 将我重定向到 chrome://app ,我可以在其中打开它,但只有在单击另一个警告弹出窗口之后
有谁知道 Chrome v111 中的哪些变化使其表现出这种行为方式以及哪些属性使其将 PWA 与 Chrome 应用程序混淆?
更新:
我想这与将 Chrome 应用程序迁移到渐进式 Web 应用程序有关:
2023 年 3 月:Chrome 应用程序将不再在 Windows、Mac 和 Linux 上启动”
我用不同的 OpenLayers-Versions 创建了两个相同的小提琴:
OpenLayers v3.18.0和OpenLayers 4.1.1
目标是以高分辨率导出PNG。我没有包括文件的实际导出。如果有兴趣,这里会解释。
在更新版本之前,一切都很好(我认为直到 4.x 版本)。
如果您将 Windows 中的 DPI 设置设为 100%,则两个小提琴都会执行相同的操作 - 但如果您将 DPI 设置更改为 125%,则后一个小提琴不会更新文本某些文本!它变得非常小并且位于错误的位置。
地图保持原样,直到我点击进入(或我调用map.updateSize())。所以我想,我map.updateSize()在最后添加precompose- 但无论我在哪里做,导出的图像都是错误的,因为它updateSize()似乎是异步的并且在 postcompose之后发生。
我没有发现关于这个问题的重大变化。我忽略了什么还是一个错误?任何解决方法的建议?
使用cdkScrollable我遇到了错误或我的理解问题:
我已经实现了一个,并且正在 -Method中DataSource订阅 collectionViewer 的事件。正如本例中所做的那样。viewChangeconnect
现在在我的代码中,该viewChange事件永远不会被触发 - 因此数据源永远不会加载。我需要 viewChange 事件,因为只有这个事件才能告诉我range应该加载哪个(或页面)数据。
经过对 github 的一些研究,我发现,在_updateRenderedRange(代码)中,它检查我的数据源返回的数组的长度(当我等待事件触发时,它还没有返回任何内容)。
该示例之所以有效,是因为它初始化了一个长度为 100000 的数组。我不明白 和dataLength滚动策略之间的联系。在我看来,结果数据数组的大小在计算范围时应该没有区别...我认为范围是通过可滚动元素的大小和渲染项目的大小来计算的。也许还有一个参数告诉视口总共有多少个项目,以便它可以绘制正确的滚动条(就像数据表中的分页器知道有多少页)。但为此,您不需要初始化包含那么多项目的数组。
我在这里缺少什么?
我在SinglePageApplication中使用DbGeography-Type(带微风和角度).现在使用带有DbGeography-Type的数据(readOnly)时没有问题.
只要我保存了一个具有DbGeography-Type属性的实体,就会出现以下错误:
Error getting value from 'WellKnownValue' on 'System.Data.Entity.Spatial.DbGeography'
Run Code Online (Sandbox Code Playgroud)
当数据被序列化为JSON(使用newtonsoft JSON.NET或ODATA/WebAPI?)时,DbGeography会被正确序列化,但属性"WellKownValue"被称为"Geography".这也反映在MSDN文档中:
[DataMemberAttribute(Name = "Geography")]
public DbGeographyWellKnownValue WellKnownValue { get; set; }
Run Code Online (Sandbox Code Playgroud)
我的实体看起来像这样(通过电线):
{
..
"Name" : "Test",
"Coordinate" : {
"$id" : "3",
"$type" : "System.Data.Entity.Spatial.DbGeography, EntityFramework",
"Geography" : {
"$id" : "4",
"$type" : "System.Data.Entity.Spatial.DbGeographyWellKnownValue, EntityFramework",
"CoordinateSystemId" : 4326,
"WellKnownText" : "POINT (8.73275400148029 47.5006958431132)"
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想当它稍后被反序列化时,JSON.NET不知道我的对象的Geography -Property实际上被称为WellKnownValue.
我使用的是Newtonsoft.Json-Package版本7.0.1和Microsoft.Data.OData版本5.6.4.
怎样才能解决这个问题?
如何使用AsyncPipe 内部或ngFor最佳实践来完成对列表项的异步调用?
示例: 假设我有一个产品订单,并且我想显示该产品的制造商。但制造商需要从存储(localstorage)加载才能显示。我最初的解决方案如下(未经测试的伪代码):
HTML:
<ol>
<li *ngFor="let prod of order.toProducts">
{{ prod.Name }}: {{ DisplayManufacturer(prod) | async }}
</li>
<ol>
Run Code Online (Sandbox Code Playgroud)
打字稿:
public async DisplayManufacturer(prod: product) {
let manufacturer = await this.storageService.Load(prod.manufacturerId);
if (manufacturer) {
return manufacturer.name + ' (' + manufacturer.address + ')';
}
return "";
}
Run Code Online (Sandbox Code Playgroud)
这当然会导致无限循环。
我的下一个解决方案是,遍历所有订单及其里面的所有产品,ngOnInit找到制造商并将它们存储在 a 中Map以供以后在表达式中使用。
我觉得应该有一个更好的解决方案 - 因为这还没有结束:我还必须实施DoCheck以检查是否有任何产品阵列或制造商更改并重新加载所述地图。这适用于每个类似引用的字段。
angular ×3
.net ×1
angular-cdk ×1
angularjs ×1
breeze ×1
html5-canvas ×1
json.net ×1
openlayers ×1
openlayers-3 ×1
sqlgeography ×1
templates ×1