Я вытаскиваю данные JSON с сервера. Внутри объекта JSON я возвращаюсь, у меня есть строки, которые я хочу, чтобы иметь возможность использовать заполнители, чтобы динамически вставлять значения, введенные пользователем в пользовательском интерфейсе.Привязать часть строки к переменной угловой области
Я понимаю, что это компиляция $, но я не могу заставить ее работать. Я не уверен, что это возможно, или если я просто приближаюсь к нему неправильно.
Редактировать: Не знаю, хорошо ли я объясняю. Есть немного дальше, и я обновил Plunk и код ниже
упрощенный пример (view Plunk):
Вид:
<body ng-controller="MainCtrl">
<input ng-model="name" type="text" />
<p ng-bind-html="myval">{{myval}}</p>
<p>{{name}}</p>
</body>
Угловое приложение:
var app = angular.module('plunker', ['ngSanitize']);
app.controller('MainCtrl', function($scope, $compile, dataSvc) {
init();
function init() {
$scope.data = dataSvc.getData();
$scope.name = '';
}
$scope.$watch('name', function(newVal, oldVal) {
var c = $compile('<span>' + $scope.data.vals[0].text + '</span>')($scope);
console.log(c);
console.log(c[0]);
$scope.myval = c[0];
});
});
app.service('dataSvc', function() {
this.getData = function() {
return {
vals: [
{
text: "Hello {{name}}"
}
]
}
};
});
Это почти работает с $ compile и con единственная регистрирует изменения так, как я хочу, чтобы они произошли, я просто не могу ее выводить на дисплей.
Это чувствует, как проблема XY. Угловая на самом деле не имеет службы для выполнения такой интерполяции, потому что к тому времени, когда эта строка будет отображаться в браузере, цикл '$ digest' уже завершен. вы * можете * использовать директиву и вводить элемент вручную, но на самом деле, есть несколько причин, по которым вы будете хранить выражения на стороне клиента в своем исходном состоянии в базе данных в первую очередь. – Claies
@Claies Существует причина для этого, и компиляция $ работает, я просто что-то пропустил в ее использовании. См. Обновления выше. –
компиляция не работает; compile создает элемент, который необходимо добавить в коллекцию элементов на странице вручную. Помимо этого, я все еще утверждаю, что сервер не имеет никакого бизнеса при передаче кода на стороне клиента. – Claies