我想改变AngularJS模板(ngBind)的分隔符

<div>{{hoge}}</div>

我想把↑变成↓,就像那样的东西。

<div>%%hoge%%</div>

因为搜索不到,所以我通过grep命令搜索源代码来寻找。

当我使用”angularjs分隔符”进行搜索时,结果显示…

Golang模板与AngularJS分隔符冲突
解决Jinja2和AngularJS变量范围的竞争方法
在Golang+Revel环境中使用AngularJS的技巧

但是这个不完全是 AngularJS 的问题,而是因为修改了服务器端(?)的分隔符,所以与要求不同。

你的手机是什么品牌?

首先,直接从未经拼接、缩小和压缩的angular.js文件中进行grep操作。

$ grep "{{" angular.js | wc -l
    248

虽然写着wc -l,但实际上是有248行。而且还有很多注释行。

2 (两)

所以,接下来就将注释行删除。

$ grep -v "\s*\*" angular.js | grep "{{" | wc -l
    163

减少了很多。在这附近,虽然有一些线索可以找到,但还需要再深入调查一下。

由于在Angular.js的注释行中,编写了生成示例的HTML,因此假设会删除类似标签的内容并将其赋值给变量,我们可以添加=作为条件。

$ grep -v "\s*\*" angular.js | grep -v "\s*<" | grep "{{" | grep "="  | wc -l
    8
$ grep -v "\s*\*" angular.js | grep -v "\s*<" | grep "{{" | grep "=" 
     I can add: {{a}} + {{b}} =  {{ a+b }}
           I can add: {{a}} + {{b}} =  {{ a+b }}
           I can add: {{a}} + {{b}} =  {{ a+b }}
        $scope.html = 'Hello {{name}}';
        denormalizeTemplate = (startSymbol == '{{' || endSymbol  == '}}')
  var startSymbol = '{{';
                     id="{{name}}"
          whenExp = attr.$attr.when && element.attr(attr.$attr.when), // we have {{}} in attrs

对于这个问题,从任何角度来看,只要搜索 startSymbol ,就能明白……这一点是很清楚的啊。嗯。

$ grep -n "var startSymbol " angular.js 
7409:    var startSymbol = $interpolate.startSymbol(),
10773:  var startSymbol = '{{';

$interpolate有一个startSymbol方法,这很可疑。我进行了搜索。

5岁

非常客气地,以下是写得如下。

使用$interpolateProvider.startSymbol来更改符号。

当我查看这个链接时,在示例中找到了我想要做的事情。

總結

只要在设定的 App 配置中进行修改即可。

var app = angular.module('hogeApp', []);

app.config(function($interpolateProvider) {
  $interpolateProvider.startSymbol('%%');
  $interpolateProvider.endSymbol('%%');
});

不过我觉得这个影响范围太大了啊。。。

不用多说

当我在搜索「angularjs分隔符」时,它立刻就出现了。。。
javascript – Angular JS自定义分隔符 – Stack Overflow

广告
将在 10 秒后关闭
bannerAds