我想創建一個指令,我需要根據可能會有所不同的過濾器格式化一個值(取決於字段,它可能是「number:2」,「date」 ... 管他呢)。AngularJS:定製過濾器裏面的指令模板
所以我想在標記中使用指令時定義過濾器。 通過此遷移器描述場景:http://embed.plnkr.co/N2zKITFpUQMxmylAAGlt/preview
到目前爲止,未應用過濾器或引發錯誤。
什麼是實施它的正確方法? 感謝名單
我想創建一個指令,我需要根據可能會有所不同的過濾器格式化一個值(取決於字段,它可能是「number:2」,「date」 ... 管他呢)。AngularJS:定製過濾器裏面的指令模板
所以我想在標記中使用指令時定義過濾器。 通過此遷移器描述場景:http://embed.plnkr.co/N2zKITFpUQMxmylAAGlt/preview
到目前爲止,未應用過濾器或引發錯誤。
什麼是實施它的正確方法? 感謝名單
這裏有一個辦法做到這一點使用template:function(elem,attrs)
app.directive('editableField', function() {
return {
restrict: 'A',
replace: true,
template:function(elem,attrs) {
return '<div>' +
'<input ng-model="editableModel" />' +
'<div class="output">{{editableModel|'+attrs.editableFilter+' }}</div>' +
'</div>';
},
/* if using in a form....I would remove the isolated scope*/
scope: {
editableModel: '='
},
controller: function($scope) {},
link: function($scope, $element, $attrs, $filter) {
var input = $element.find('input');
input.bind('click', function() {
this.select();
});
}
};
});
這裏是一個工作Plunkr:
http://plnkr.co/edit/nZgah7PtGRVMWBgKu7V8?p=preview
有兩個例子,一個將其格式化爲一個浮點數,另一個將其格式化爲日期格式。格式本身我沒有做,因爲它是相當微不足道的。
Thanx。這可能是第二種解決方案,但到目前爲止,我發現以前的答案(來自charlietfl)更加簡潔。 –
我會說我的解決方案更乾淨,因爲它不涉及串聯模板中的字符串。此外,我會爲複雜的對象工作,你可以傳遞給你的過濾器。 –
我同意你的看法,但我不喜歡你的示例開啓過濾器類型的方式。 –
Thanx,迄今爲止我見過的最好的解決方案。 –