角度指令可以提供公共方法

时间:2014-10-18 11:09:13

标签: angularjs angularjs-directive

我是Angular的新手,很有可能我的问题的答案将是"这不是它在角度方面的表现"。

我有一个模板扩展指令,它提供了一个清单:

[ ] mushrooms
[ ] peppers
[ ] onions
[ ] artichokes
[ ] anchovies

清单的dataSource是一个对象数组。底层对象的一个​​属性是" bits":

mushrooms  bits:2, 
peppers bits: 4, 
onions bits: 8, 
artichokes bits: 16, 
anchovies: 32. 

有人用蘑菇和凤尾鱼订购比萨饼的人会有点总数:34。

checklist指令是否有办法封装$ scope可以访问的TotalBits()方法?是否有"手柄"到$ scope中的实例化清单对象?

2 个答案:

答案 0 :(得分:0)

你总是可以将一个回调方法传递给指令(作为一个属性),一旦它具有计算的位数,它就会被指令调用。

答案 1 :(得分:0)

您可以扩展模块以实现此功能。见这个例子:

var menu = [{
    name: 'mushrooms',
    bits: 2,
    selected: false
}, {
    name: 'pepers',
    bits: 4,
    selected: false
}];
menu.totalBits = function () {
    var total = 0;
    this.forEach(function (item) {
        if (item.selected) total = total + item.bits;
    });
    return total;
};

由于JS具有可塑性,我们可以将totalBits函数添加到模型数组中,就是这样。

我也为它创造了一个小提琴http://jsfiddle.net/s8n5y2kg/