Допустим, мы передаем исходные данные из php в Angular ‘с помощью Mustache, и эти данные представляют собой строку, которая содержит кавычки, например «Не могу удалить элемент».
Усы по умолчанию переводят одинарную кавычку в '
лайк:
ng-init="message='Can't delete item'"
но это вызывает некоторую проблему разбора Angular:
Ошибка лексера: неопределенная кавычка в столбцах … [‘] в выражении [message =’ Can’t delete item ‘]
Я не могу использовать тройные кудри усов, потому что тогда это будет похоже на:
ng-init="message='Can't delete item'"
с той же ошибкой в выводе.
Plunk: http://plnkr.co/edit/GCq4gLrD1NxxCvAsjHy9?p=preview
Как мы можем элегантно решить это на сцене Усов?
Просто избегайте цитаты:
ng-init="message='Can\'t delete item'"
Избегайте одиночной кавычки с backslash \
как это:
ng-init="message='Can\'t delete item'"
Попробуйте переключить двойные кавычки и одинарные кавычки.
так вместо
ng-init="message='{{delete_message}}'"
пытаться
ng-init='message="{{delete_message}}"'
Я создал директиву для размещения вашего контента, он назначит тело директивы переменной scope.message.
app.directive('myMessageVar',function(){
return{
restrict :'A',
scope:{
message:'=myMessageVar'
},
link: function (scope, iElement, iAttrs) {
scope.message=iElement.text();
iElement.text('');
}
}
})
В HTML
<span my-message-var="message">Can't delete item</span>
Я столкнулся с этой проблемой сегодня, и я не нашел много ответов. Но этот кусок кода работает для меня.
<?php $data_slashed = htmlentities(addslashes(html_entity_decode($data,ENT_QUOTES)),ENT_QUOTES); ?>
куда $data
некоторые данные, которые были закодированы с использованием htmlentities
.
Тогда вы можете сделать это
<p ng-bind-html= "data" ng-init="data='<?php echo $data_slashed; ?>'" />
Я не пробовал усы, но это работает для моего php шаблона. Надеюсь, что это поможет кому-то еще.
Я полагаю, что вы используете init неправильно. От ngInit документы:
Единственное подходящее использование ngInit — для псевдонимов специальных свойств ngRepeat, как показано в демонстрации ниже. Помимо этого случая, вы должны использовать контроллеры вместо ngInit для инициализации значений в области.
Для передачи значений со стороны сервера, я думаю, вы должны использовать $ HTTP (AJAX) или Module.constant
/Module.value
от angular.Module.
Например:
// define a value
app.value('message','Can't delete item');
// define a constant
app.constant('constMessage', 'Can't delete item');
Затем вы можете внедрить их в службы или контроллеры. например, для контроллера:
// use it in a controller
app.controller('someController', ['$scope', 'message', 'constMessage',
function($scope, message, constMessage) {
$scope.message = message;
$scope.constMessage = constMessage;
});
Это может сработать, если ваша проблема ограничена одинарными кавычками
ng-init='message="Can't delete item"'
Попробуйте ниже код, он должен работать.
<body ng-controller="MainCtrl" ng-init='message="Can't delete item"'>
<p>Message: {{message}}</p>
</body>