车把般的角度模板

时间:2013-10-04 11:05:21

标签: javascript angularjs templating partials directive

我真的很难在如何进行角度模板化。所以我有一张桌子,我就像这样填充它:

 <tr ng-repeat="store in stores">
    <td>
       <p>{{store.day_one.visitor_count}}</p>
       <span>ng-class="{green: ... >= 0, red: ... < 0}"</span>
       <small>store.difference.visitor_count</small>
    </td>
    <td>
       <p>{{store.day_one.conversion_rate}}</p>
       ...
    </td>
    <td>
       ...
       <p>{{store.day_one.dwell_time}}</p>
       ...
    </td>
 </tr>

但我真的很想拥有,更像是:

<td reportNumber="{numberOne: store.day_one.visitor_count,
                   numberTwo: store.difference.visitor_count}>
</td>

选项1:

编写一个指令,创建适当的html并将其附加到td ...但是如何在指令中编写html-strings?我无法在angular中找到一个允许我以一种很好的方式编写html字符串的util方法,并且像'<p>' + 'numberOne' + </p>...那样编写它是一种痛苦。

但是也有部分内容,我不能只使用部分并在指令中填充它们吗?我无法找到加载它们的正确方法,并通过$ http获取它们似乎很奇怪。

选项2:

直接使用ng-include,但如何以适当的方式在视图中创建范围变量?我可以这样:

<td dummyVar="{{ numberOne = store.day_one.visitor_count;
                 numberTwo = store.difference.visitor_count}}"
  ng-include="'/static/angular/views/partials/reportNumber.html'">
</td>

但这似乎相当干净而不干净,我不知道是否一直存在重新定义这些变量的问题。

我的问题:如何使用模板以很好的方式创建表格?

1 个答案:

答案 0 :(得分:2)

使用简单的指令:

app.directive("mytd", function() {
    return {
        template:
            "<div>" +
                "<p>{{num}}</p>" +
                "<span ng-class='{green: diff >= 0, red: diff < 0}'></span>" +
                "<small>{{diff}}</small>" +
            "</div>",
        scope: {
            num: "=",
            diff: "="
        }
    };
});

并使用它:

<td mytd="" num="store.day_one.visitor_count" diff="store.difference.visitor_count"></td>

请参阅小提琴:http://jsfiddle.net/ztxTe/