簡體   English   中英

ng-init中的單引號/雙引號

[英]Single/double quotes in ng-init

假設我們正在通過Mustache將初始數據從php傳遞到Angular的視圖,並且數據是一些包含引號的字符串,例如“無法刪除項目” Mustache默認將單引號轉換為' 喜歡:

 ng-init="message='Can't delete item'"

但這會導致某種Angular解析問題:

Lexer錯誤:列中的未終止引用...表達式中的['] [message ='無法刪除項目']

我不能使用Moustache的三重卷曲,因為它會像:

 ng-init="message='Can't delete item'"

輸出中出現相同的錯誤。

Plunk: http ://plnkr.co/edit/GCq4gLrD1NxxCvAsjHy9?p = preview

我們如何在Mustache舞台上優雅地解決它?

逃避報價:

ng-init="message='Can\'t delete item'"

使用backslash \\逃避單引號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&#039;t delete item</span>

Plunkr: http ://plnkr.co/edit/QRtXLX1IiGS6VV0Rc78I?p=preview

我今天遇到了這個問題,但我找不到多少答案。 但這段代碼對我有用。

<?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文檔:

ngInpe的唯一合適用途是用於別名ngRepeat的特殊屬性,如下面的演示所示。 除了這種情況,您應該使用控制器而不是ngInit來初始化作用域上的值。

對於從服務器端傳遞價值,我認為你應該要么使用$ HTTP (AJAX)或Module.constant / Module.valueangular.Module

例如:

// define a value
app.value('message','Can&#039;t delete item');

// define a constant
app.constant('constMessage', 'Can&#039;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&#039;t delete item"'

嘗試下面的代碼它應該工作。

<body ng-controller="MainCtrl" ng-init='message="Can&#039;t delete item"'> <p>Message: {{message}}</p> </body>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM