使用角度为js的灰尘模板

Him*_*shu 8 javascript templates angularjs dust.js

我是angularjs环境的新手,我想使用角度使用灰尘模板,因为当前的应用程序有灰尘模板,但我找不到任何关于如何使用我现有的带角度js的灰尘模板.

问题是灰尘模板具有不同的语法,而角度js模板使用它提供的指令.

所以问题是"有没有办法使用我现有的带角度js的灰尘模板"?或者我必须根据angularjs规范重写模板.

Zla*_*tko 6

有一部分可以在大多数情况下工作,没有太多重写.我假设你正在使用Dust和Angular默认值,所以你需要用单个替换双花括号:

angular.module('myApp', []).config(function($interpolateProvider){
    $interpolateProvider.startSymbol('{').endSymbol('}');
});
Run Code Online (Sandbox Code Playgroud)

如果你有一个简单的用例,就像在模板中这样:

Hello Himanshu, the time is now {time}.
Run Code Online (Sandbox Code Playgroud)

如果您通过templateUrl为Angular提供该文件(或使用gulp-angular-templatecache或其他任何方式加载它),您可以:

angular.module('myApp').directive('myTime', ['$scope', function($scope) {
    $scope.time = new Date();
});
Run Code Online (Sandbox Code Playgroud)

这将呈现.但是你需要进行大量的检查,重命名等.

对于更复杂的用例,你必须进行一些重命名,搜索和替换等.例如,如果你有一个简单的循环,并希望在那里进行ng-repeat,你必须替换:

<table name="users">
    {#users}
        <tr>
             <td>{name}</td>
        </tr>
    {/users}
</table>
Run Code Online (Sandbox Code Playgroud)

有了这个:

<table name="users">
    <tr ng-repeat="user in users">
         <td>{user.name}</td>
    </tr>

</table>
Run Code Online (Sandbox Code Playgroud)

或者,如果您有包含,请更改:

{>details}
Run Code Online (Sandbox Code Playgroud)

<ng-include="details.html">
Run Code Online (Sandbox Code Playgroud)

你绝对可以重用一些组件,但问题是你得到了多少和什么.而且我不确定你可能带来的其他指令如何对单卷括号使用做出反应,它们可能会破坏所以你可能会更好的只是搜索和替换它们.

当然,将它们全部重命名为.html,.dust或类似,如果它们没有被命名.