将HTML / CSS元素转换为可重用的AngularJS指令?

时间:2014-12-15 18:53:38

标签: javascript html css angularjs

我有一个基于HTML的管理面板的Web UI。

我正在尝试使用所有HTML组件,并将它们转换为可重用的AngularJS指令,这样我就可以轻松地将它们嵌入到页面中。

这是我坚持的一个:

<section class="dash-tile">
    <div class="tile-title" ng-controller="testCtrl">{{test}}</div>
    <div class="tile-stats"><b>8068</b>
    </div>
    <div class="progress progress-xs mt5 mb10">
        <div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: 40%">
        </div>
    </div>
    <div class="tile-footer">
        Based on new sales
    </div>
</section> 

在我的.html GUI中使用的这个片段将创建一个带有一些数据的小盒形标题。

有人能举例说明如何将其变成可重复使用的组件吗?

到目前为止,我在这里:

admin.directive('whiteBox', function () {
  return {
    restrict: 'EA', //restrict the directive to ONLY an attribute or element
        replace: true,
    transclude: true,
    template: '<section class="dash-tile">' +
                                    '<div class="tile-title" ng-controller="testCtrl">' + '{{test}}' + '</div>'
                                    + '<div class="tile-stats">' + '<b>' + '8068' + '</b>'
                                    + '</div>'
                                    + '<div class="progress progress-xs mt5 mb10">'
                                        + '<div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: 40%">'
                                    + '</div>'
                                    + '</div>'
                                    + '<div class="tile-footer">'
                                    +   'Based on new sales'
                                    + '</div>'
                                + '</section> ',
        link: function (scope, element, attrs) {
                // add events
        }
    };

但是由于某种原因,这打破了应用程序。

1 个答案:

答案 0 :(得分:1)

AngularJS 使用以下约定

如果您将指令命名为whiteBox,则在HTML中使用它white-box

AngularJS声明

app.directive('myDirective', function () {

HTML使用

<div my-directive></div>