Angularjs не применяют фильтры, когда я вызываю $ scope.digest [duplicate]

private void printNode(Node rootNode, String spacer) {
    System.out.println(spacer + rootNode.getNodeName() + " -> " + rootNode.getNodeValue());
    NodeList nl = rootNode.getChildNodes();
    for (int i = 0; i < nl.getLength(); i++)
        printNode(nl.item(i), spacer + "   ");
}
6
задан Elfayer 17 November 2015 в 09:15
поделиться

1 ответ

Начиная с версии 1.3.0-rc.2, фильтры по умолчанию не имеют статуса. Это означает, что отфильтрованное выражение будет переоцениваться только при изменении левого выражения.

У вас есть это:

<div>{{'test' | localization}}</div>

test, очевидно, никогда не изменится в этом case, поэтому все выражение будет оцениваться только один раз.

Вам нужно указать фильтр как состояние:

app.filter("localization", function(localizationService) {

  function localization(value) {

    if (localizationService.text && localizationService.text.hasOwnProperty(value)) {
      return localizationService.text[value];
    }
    return value;
  }

  localization.$stateful = true;

  return localization;
});

Демо: http://plnkr.co / редактировать / YIzmH3lR9350McprusAA? р = предварительный просмотр

18
ответ дан tasseKATT 20 August 2018 в 09:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: