Оценка выражений усов после инициализации страницы (динамическое связывание)
У меня есть 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