django-angular无法在模板中使用过滤器标签

时间:2016-03-20 13:45:58

标签: javascript python html angularjs django

我有 django 服务api 以及包含 html文件的静态文件,在html中我正在使用angular

的index.html

<div class="container">
    <div class="row">
         <div class="col-sm-8 blog-main">
             <div ng-view></div>
         </div>
    </div>
</div>

app.js

sampleApp.config(['$routeProvider',
    function($routeProvider) {
        $routeProvider.
        when('/', {
            templateUrl: '/static/views/home.html',
            controller: 'index_ctrl'
        })
    }
]);

home.html的

<div class="blog-post" ng-repeat="x in data">
    <p class="blog-post-title"><a href="">{{ x.title }}</a></p>
    <p class="blog-post-meta"><i class="fa fa-clock-o">&nbsp{{ x.pub_date|date  }}</i> </p>
    {{ x.description|limitTo:'50'}}
    <p><a href="">See more</a></p>
    <hr />
</div>

我发现角度过滤器不限制我的文字,而是输出所有文字....什么可以替代选项?

我还尝试使用django过滤器代码{{ x.description|truncatewords:'50'}},但角度错误Error: Unknown provider: truncatewordsFilterProvider <- truncatewordsFilter

对此有任何帮助表示赞赏....提前致谢

2 个答案:

答案 0 :(得分:0)

如果您使用带有django模板语言的angularjs,则它们的模板标签会发生冲突。 您将在下面的链接中找到解决方案 AngularJS with Django - Conflicting template tags

答案 1 :(得分:0)

在呈现HTML时,无法访问任何调用任何Django模板标签/过滤器,只有当您刷新再次调用的页面时,才会处理对Django及其过滤器的任何请求。

如果您使用的是开放式大括号 {{并且需要避免Django使用它,则需要使用 {%templatetag openvariable%} 并关闭大括号<强>}} {%templatetag closevariable%} 代替。

当然'truncatewords'过滤器无法正常工作,因为 它是一个Django过滤器,而不是Angular。