javascript - Angularjs use custom interpolation symbols for scope -


i have underscore.js template use angular , still able use underscore. wondering if it's possible change interpolation start , end symbols particular scope using directive, this:

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());              // replace element contents interpolated contents          }      }  }) 

but spits out error

error: unknown provider: $interpolateproviderprovider <- $interpolateprovider <- underscoretemplatedirective

is $interpolateprovider available module configuration? better solution using string replace change <%= {{ , %> }}?

also, noticed element.html() escapes < in <%= , > in %>. there way prevent automatic escaping?

ok, have couple issues here, i found solution you.

demo

http://jsfiddle.net/colllin/zxwf2/

issue 1

your < , > characters being converted &lt; , &gt;, when call element.html(), won't find instance of < or > in string.

issue 2

since $interpolate service has been "provided" $interpolateprovider, doesn't can edit startsymbol , endsymbol. however, can convert custom startsymbol , endsymbol angular start/end symbols dynamically in linking function.

solution

myapp.directive('underscoretemplate', function ($parse, $compile, $interpolate) {     return {         restrict: "a",         link: function(scope, element, attrs) {             var startsym = $interpolate.startsymbol();             var endsym = $interpolate.endsymbol();             var rawexp = element.html();             var transformedexp = rawexp.replace(/&lt;%=/g, startsym).replace(/&lt;%-/g, startsym).replace(/%&gt;/g, endsym);             var parsedexp = $interpolate(transformedexp);              scope.$watch(parsedexp, function(newvalue) {                 element.html(newvalue);             });         }     } }); 

alternatives

i'm not sure how, i'm sure there's way instantiate own custom $interpolate service using $interpolateprovider (after configuring underscore tags).


Comments

Popular posts from this blog

java - Run a .jar on Heroku -

java - Jtable duplicate Rows -

validation - How to pass paramaters like unix into windows batch file -