smart-table select unique兼容Edge

ng.module('smart-table').directive('stSearch', ['stConfig', '$timeout', '$parse',
    function(stConfig, $timeout, $parse) {
        return {
            require: '^stTable',
            link: function(scope, element, attr, ctrl) {
                var tableCtrl = ctrl;
                var promise = null;
                var throttle = attr.stDelay || stConfig.search.delay;
                var event = attr.stInputEvent || stConfig.search.inputEvent;
                var trimSearch = attr.trimSearch || stConfig.search.trimSearch;
                //兼容Edge
                if (element[0].localName == 'select') {
                    event = 'change';
                }
                attr.$observe('stSearch', function(newValue, oldValue) {
                    var input = element[0].value;
                    if (newValue !== oldValue && input) {
                        ctrl.tableState().search = {};
                        input = ng.isString(input) && trimSearch ? input.trim() : input;
                        tableCtrl.search(input, newValue);
                    }
                });
                //table state -> view
                scope.$watch(function() {
                    return ctrl.tableState().search;
                }, function(newValue, oldValue) {
                    var predicateExpression = attr.stSearch || '$';
                    if (newValue.predicateObject && $parse(predicateExpression)(newValue.predicateObject) !== element[0].value) {
                        element[0].value = $parse(predicateExpression)(newValue.predicateObject) || '';
                    }
                }, true);
                // view -> table state
                element.bind(event, function(evt) {
                    evt = evt.originalEvent || evt;
                    if (promise !== null) {
                        $timeout.cancel(promise);
                    }
                    promise = $timeout(function() {
                        var input = evt.target.value;
                        input = ng.isString(input) && trimSearch ? input.trim() : input;
                        tableCtrl.search(input, attr.stSearch || '');
                        promise = null;
                    }, throttle);
                });
            }
        };
    }
]);
   

 

posted @ 2018-11-29 15:29  小猪章鱼  阅读(244)  评论(0编辑  收藏  举报