Оценка выражений усов после инициализации страницы (динамическое связывание)

У меня есть HTML-документ, содержащий выражения усов, которые angular-dart оценивает очень хорошо:

</head>
<body ng-cloak>
  <ctrlTextElements>
    <div id="stage">outside: {{ctrlTextElements.test1('three')}}</div> 
  </ctrlTextElements>

Я хочу динамически добавить HTML с выражением усов, например:

CtrlTextElements.addTextElement(mousePos.x, mousePos.y);
var div = dom.querySelector('#stage');
  HttpRequest.getString("../path/text.html").then((r) {
      div.children.add(new Element.html(r, validator: new AllowAllValidator()));
  });

Содержимое добавленного text.html выглядит следующим образом:

<div>inside: (not evaluated): {{ctrlTextElements.test1('three')}}</div>

Вот результат в браузере:

снаружи: три
inside: (не оценено):{{ctrlTextElements.test1('three')}}

Как я могу переоценить выражения усов внутри содержимого, которое было применено после загрузки страницы?

2 ответа

Решение

Проблема в том, что вы смешиваете здесь jQuery, как логику, с угловой логикой: манипулирование dom "вручную" редко является хорошим решением.

Проблема здесь в том, что ваша новая добавленная привязка не была скомпилирована angularjs = она не была проиндексирована как директива, которую нужно отслеживать и обновлять при изменении области действия.

Либо вы используете более угловатый способ, например, используя директиву ng-hide или ng-repeat, чтобы отобразить ваш контент в соответствии с областью действия контроллеров (или другой пользовательской директивой), либо вы пытаетесь скомпилировать вашу недавно добавленную директиву (но это плохо): https://docs.angularjs.org/api/ng/service/$ compile.

Возможно, попробуйте в вашем контроллере: $scope.$ Compile( div);

Не уверен в синтаксисе, хотя. Может быть, вам нужно будет написать

<span ng-bind="..."></span> 

вместо

{{ ... }} 

чтобы это работало.

@Alexhv прав. Извините за мой предыдущий ответ. Я предположил, что это о полимере. Уже было время спать.

Вы можете найти пример кода в моем ответе на этот вопрос: setInnerHtml не оценивает усы

Пакет паба bwu_angular ( http://pub.dartlang.org/packages/bwu_angular) содержит этот код в качестве декоратора (директива) с именем bwu-safe-html

Другие вопросы по тегам