簡體   English   中英

每次都調用一個指令

[英]Call a directive for each time

我想稱一個角度指令。 這應該在所有事件( eg:- ng-click..etc之前每次調用。 當視圖值更改時。當視圖切換時,它應該是第一個調用。

這是小提琴。

angular.module('myApp', []);
angular
  .module('myApp').directive('format', ['$filter', function ($filter) {
    return {
        require: 'ngModel',
        scope: { 
        val : '=val'
        },
        link: function (scope, elem, attrs, ctrl) {

            if (!ctrl) return;
            ctrl.$formatters.unshift(function (a) {

            if(attrs.symbol == '$')
             return $filter(attrs.format)(ctrl.$modelValue, '$')
             else
                return $filter(attrs.format)(ctrl.$modelValue)
            });
            elem.bind('change', function(event) {

            var a = elem.val();            
            var plainNumber = a.split('.').filter(function(e){
                return (e.length > 0);            
            }).join('.');
            var i = 0;
            if(isNaN(parseFloat(plainNumber))){
            i = (attrs.symbol == '$') ? 1 : 3;
            }
            var num = plainNumber.substring(i, plainNumber.length).replace(/,/g,'');
            if(attrs.symbol == '$')
            elem.val($filter('currency')(num, attrs.symbol));
            else
              elem.val($filter('currency')(num));                
            var n =parseFloat(num);
            scope.val = Number(n);
            if(!scope.$$phase) {
                scope.$apply();
             }
            });
        }
    };

}]);

每次如何調用指令。

為了做到這一點的change的值,你可以$watch上你的內部link指令功能。 它監視您的值,並在更改時為您提供回調。 像這樣:

scope.$watch(function() {
    return elem.val()
}, function(newVal, oldVal) {
    var a = newVal;
    // what you do on blur, do it here 
})

這是jsfiddle示例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM