【问题标题】:Add another custom interpolator in Angularjs在 Angularjs 中添加另一个自定义插值器
【发布时间】:2014-01-31 15:35:16
【问题描述】:

我仍然希望{{1+2}} 被正常评估。但是除了普通的插值器之外,我还想创建一个自定义的插值器,我可以对其进行编程来做任何我想做的事情。

例如<p>[[welcome_message]]</p> 应该是 <p>{{'welcome_message' | translate}}</p><p translate="welcome_message"></p> 的快捷方式。这样,i18n 应用程序编写起来会更方便。

这样的事情可能吗?我目前正在浏览 angular.js 源代码,但插值系统看起来相当复杂(?)。有什么建议吗?

【问题讨论】:

    标签: angularjs internationalization interpolation


    【解决方案1】:

    我创建了一个正则表达式查找替换它的innerHTML 的指令。基本上,我可以将任何文本重写为任何其他文本。我是这样做的:

    How do I make angular.js reevaluate / recompile inner html?

    现在我要做的就是将我的指令属性“autotranslate”放在我希望我的插值器工作的父元素之一中,它会根据我的需要重写它! :D

    <div class="panel panel-default" autotranslate>
      <div class="panel-heading">[[WELCOME]]</div>
      <div class="panel-body">
        [[HELLO_WORLD]
      </div>
    </div>
    

    变成

    <div class="panel panel-default" autotranslate>
      <div class="panel-heading"><span translate="WELCOME"></span></div>
      <div class="panel-body">
        <span translate="HELLO_WORLD"></span>
      </div>
    </div>
    

    这正是我想要的。

    【讨论】:

      【解决方案2】:

      我不认为这是可能的,但如果你真的想保存一些字符,你可以在你的 rootScope 上创建一个名为 t 的函数,然后在你的视图中调用它:

      <p>{{ t(welcome_message) }}</p>
      

      【讨论】:

        猜你喜欢
        • 2021-04-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-09
        • 2017-09-03
        • 1970-01-01
        • 1970-01-01
        • 2020-10-28
        相关资源
        最近更新 更多