角度范围。$ watch不在指令中工作。无法阅读财产'申请'未定义的

时间:2017-06-20 13:55:20

标签: javascript angularjs angularjs-directive

我有一个名为tabset的指令

angular.module('widgets')
.directive('tabset', function() {
    return {
        restrict: 'E',
        transclude: true,
        scope: {},
        controllerAs: 'tabs',
        bindToController: {
            tabInfo: '=tabdata'
        },
        templateUrl: 'Template.html',
        link: function(scope, element, attrs, tabs) {
            //var tabs = this;
            scope.$watch('tabs.tabInfo', function() {
                tabs.populateDataProvider();
                console.log('this just kicked');
            }, true);
        },
        controller: ['$filter', '$state', function($filter, $state) {
            this.activeIndex = this.activeIndex < 0 ? 0 : this.activeIndex;
            this.selectTab = function selectTab(tab) {
                $state.go(tab.state);
            };
        }]
    };
});

我现在有一个名为checkTab的依赖指令,它需要&#34; tabset&#34;并且在更改为tabset.tabInfo时,需要启动并且需要触发populatedataprovider。然而,这似乎并非如此。

这是checkTab指令,

 angular.module('widgets')
.directive('checkTab', ['XXXService',
 function(XXXService) {
    return {
        restrict: 'A',
        require: 'tabset',
        link: function(scope, element, attrs, ctrls) {
            var tabCtrl = ctrls;
            tabCtrl.tabInfo.push({
                name: 'newtab',
                state: 'newtab'
            });

            **var selectFn = tabCtrl.populateDataProvider;**

            tabCtrl.populateDataProvider = function() {
                selectFn.apply(tabCtrl, arguments);
                (function recurse(dataObj) {
                    for (var key in dataObj) {

                        var obj = dataObj[key];

                        if (obj.hasOwnProperty('children')) {
                            for (var i = 0; i < obj.children.length; i++) {
                                recurse(obj.children[i]);
                            }
                        }
                    }
                })(tabCtrl.dataprovider);
            };
        }
    };
  }
 ]);

但是,将新选项卡添加到tabset.tabInfo时。我收到错误无法读取属性&#39;申请&#39;未定义,其中未定义selectFn。

0 个答案:

没有答案