我目前有一個underscore.js模板,我還想使用angular並仍然可以使用下劃線。我想知道是否有可能使用指令來改變插值的開始和結束符號的特定範圍,就像這樣:Angularjs使用自定義插值符號作爲範圍
angular.directive('underscoreTemplate', function ($parse, $compile, $interpolateProvider, $interpolate) {
return {
restrict: "E",
replace: false,
link: function (scope, element, attrs) {
$interpolateProvider.startSymbol("<%=").endSymbol("%>");
var parsedExp = $interpolate(element.html());
// Then replace element contents with interpolated contents
}
}
})
但這吐出來的是錯誤
Error: Unknown provider: $interpolateProviderProvider <- $interpolateProvider <- underscoreTemplateDirective
是$interpolateProvider
僅適用於模塊配置?更好的解決方案是簡單地使用字符串替換來更改<%=
到{{
和%>
到}}
?
另外,我注意到,element.html()
轉義%>
在<%=
的<
和>
。有沒有辦法來防止這種自動轉義?
謝謝,這個作品很棒!我做了一個小改動(用'g'使用正則表達式)來替換所有的實例:http://jsfiddle.net/e3s5d/ –
偉大的呼叫。更新了答案。 – colllin
現在您已經指出了'<% - '語法,我意識到下劃線中的默認'<%='更類似於角色的'
'。也許你可以在這個指令中添加一些邏輯來允許非轉義的html,用'''替換原始表達式中的''%%''。參考:http://stackoverflow.com/a/10971756/361609 – colllin