AngularJS组件 - 带有Typescript的ngModelController

时间:2016-06-06 06:04:48

标签: javascript angularjs typescript components directive

我有以下(简化)指令,我想用Typescript编写它(仍然不是Angular 2.0)。

<Route path='/fixed/:fixedSearch' component={FixedSearchComponent} onEnter={checkFixedSearch} />

function checkFixedSearch(nextState, replace) {

    if (*Compare :fixedSearch with predefined values*) {
        replace('/search') // move to search route if fixed values don't match
    }
}

现在,我如何将控制器注入我的Typescript代码:

 angular
        .module('app.components')
        .directive('list', List);

    function List() {
        return {
            restrict: 'E',
            templateUrl: 'modules/components/List/List.html',
            controller: ListController,
            controllerAs: 'vm',
            require: ['ngModel', '?^form'],
            bindToController: true,
            link: LinkFunction,
            scope: {
                'id': '@',
                'name': '@'
            }
        };

        function LinkFunction(scope, element, attrs, controllers) {
            var ngModelCtrl = controllers[0];
            var formCtrl = controllers[1];

            ngModelCtrl.$isEmpty = function(value) {
                return !value || value.length === 0;
            };

            ngModelCtrl.$render = function() {
                scope.vm.form = formCtrl;
                scope.vm.model = ngModelCtrl;
                scope.vm.selected = ngModelCtrl.$modelValue;
            };

            // ... more controller functions
    }
})();

希望有人知道答案,或者可以给我一个如何实现目标的提示,因为我在网上搜了几个小时,但没有找到任何解决办法。

1 个答案:

答案 0 :(得分:1)

使用“require”,如此处所述[{3}} 请参阅组件间通信