使用模板内的组件

时间:2018-01-31 21:55:40

标签: javascript angularjs angular-translate

最近我将应用中的所有字符串迁移到angular-translate。我的原始字符串使用组件进行一些替换,如下所示:

Resource: <get-html value="'dark_matter'"></get-html>

我注意到当我将它们放入角度平移滤波器时,组件不会被调用。

我将卫生策略配置为消毒

$translateProvider.useSanitizeValueStrategy('sanitize');

我正在使用像这样的过滤器

<p>{{ 'DESCRIPTION' | translate }}</p>

get-html的实现如下

<span ng-bind-html="ct.util.trustHTML(ct.util.getHTML(ct.value))"></span>

结果是没有替换组件的字符串。

我想如果可以在字符串中调用自定义组件,或者我是从一个完全错误的角度接近它。

1 个答案:

答案 0 :(得分:0)

如果你可以修改getHTML(..)方法,你可以注入$ translate,并在方法内部进行翻译:

<Window x:Class="WpfApp11.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:WpfApp11" mc:Ignorable="d" Title="MainWindow" Height="350" Width="525"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="*" /> <RowDefinition Height="2*" /> </Grid.RowDefinitions> <DataGrid ItemsSource="{Binding Path=Entities}" AutoGenerateColumns="True" CanUserAddRows="False" /> <ItemsControl x:Name="myCanvas" Grid.Row="1" ItemsSource="{Binding Path=Entities}" MouseMove="myCanvas_MouseMove" MouseDoubleClick="myCanvas_MouseDoubleClick" MouseUp="myCanvas_MouseUp" MouseDown="myCanvas_MouseDown" Background="Beige" > <ItemsControl.ItemsPanel> <ItemsPanelTemplate> <Canvas /> </ItemsPanelTemplate> </ItemsControl.ItemsPanel> <ItemsControl.ItemContainerStyle> <Style TargetType="ContentPresenter"> <Setter Property="Canvas.Left" Value="{Binding Path=X,Mode=TwoWay}" /> <Setter Property="Canvas.Top" Value="{Binding Path=Y,Mode=TwoWay}" /> </Style> </ItemsControl.ItemContainerStyle> <ItemsControl.ItemTemplate> <DataTemplate> <Grid> <Rectangle Width="50" Height="50" RadiusX="4" RadiusY="4" Stroke="Black" Fill="Red" /> <Label Content="{Binding Path=Name}"/> </Grid> </DataTemplate> </ItemsControl.ItemTemplate> </ItemsControl> </Grid> </Window>