【问题标题】:Call function into a serie of multiple directives将函数调用成一系列的多个指令
【发布时间】:2015-11-20 20:54:20
【问题描述】:

HTML:

dt(class="dd_startup_page")
    span Tags :
        dd(class="dd_startup_page")
            noncompetitionvalue(ng-repeat="object in page_data.tags_data" name-popover="infoPopoverEdit" object="object" object-key="object.value" css-style-value="" name-add-popover="tagAddPopover" css-style-popover="display:inline; position:relative; padding-left:14px")

指令:

 angular.module('StartUpPageController', [x, x, x])
.controller('containerHandler', containerHandler)
.controller('pageControl', pageControl)
.filter('convertNumber', convertNumber)
.directive('noncompetitionvalue', function() {
    return {
        restrict: 'E',
        controller: function($scope, $element){
            var temp = $element.html();
            if ($scope.$parent.$last) {
                var popover = '<span ns-popover="ns-popover" ns-popover-trigger="click" ns-popover-placement="bottom|left" ns-popover-template="'+$scope.nameaddpopover+'" ns-popover-theme="popoverMenu" ns-popover-timeout="-1"><i style="'+$scope.cssstylepopover+'" class="icon-plus"></i></span>';
                var temp = temp.replace('LASTITEM', popover);
            }
            else 
                var temp = temp.replace('LASTITEM', ' <span> | </span> ');
            $element.html(temp)
        },
        scope: {
            namepopover: '@namePopover',
            object: '=object',
            objectkey: '=objectKey',
            stylevalue: '@cssStyleValue',
            nameaddpopover: '@nameAddPopover',
            styleaddopover: '@cssStylePopover'   
        },
        template: '<span ns-popover="ns-popover" ns-popover-trigger="contextmenu" ns-popover-placement="bottom|left" ns-popover-template="{{ namepopover }}" ns-popover-theme="popoverMenu" ns-popover-timeout="-1"><span ng-if="object.rejectedOn"><span style="{{ stylevalue }}" class="rejected">{{ objectkey }}</span></span><span ng-if="!object.rejectedOn"><span style="{{ stylevalue }}">{{objectkey}}</span></span></span> LASTITEM '
    }
});

并且指令 ns-popover 调用这个模板:

script(type="text/ng-template" id="infoPopoverEdit").
<!-- START TOOLBAR -->
<div class="toolbar">
    <i class="fa fa-close" ng-click="hidePopover();rightclickEventObject(object, false)" style="float: right;"></i>
    <!-- icon-lock -->
    <div ng-if="!object.locked">
        <i class="icon-lock" ng-click="lockHandlerStartup(true, object); hidePopover();rightclickEventObject(object, false)"></i>
    </div>
    <div ng-if="object.locked">
        <i class="icon-lock iconActive" ng-click="lockHandlerStartup(false, object); hidePopover();rightclickEventObject(object, false)"></i>
    </div>
<div>

我得到的唯一一个问题是我不能在弹出窗口中使用我的函数...这些函数在我的函数 pageControl 中定义,它被定义为控制器。 我将感谢任何能够阐明我可能忽略的方面的人...... 提前致谢。干杯

【问题讨论】:

    标签: javascript angularjs angularjs-directive popover


    【解决方案1】:

    目前尚不清楚您要在这里做什么,但我认为您是在问如何从其他地方调用控制器中定义的函数,例如指令。最简单的方法就是将函数作为参数传递给指令并让它调用。这是基本骨架。

    <div my-directive passed-in-func="myFunction"></div>
    
    .controller('myController',function($scope) {
        $scope.myFunction = function() {
    
        };
     }
    
    .directive('myDirective',function() {
      return {
       scope: {
         passedInFunc: '='
       },
       template: "<div ng-click='doCallFunc()'>blah blah</div>",
       link: function(scope,element,attrs) {
           scope.doCallFunc = function() {
              passedInFunc();
           };
       }
    
      }
    
    });
    

    【讨论】:

    • 好的,我会试着解释一下。我创建了一个显示值的指令。 (指令:'非竞争价值')。该指令的模板包含另一个指令github.com/nohros/nsPopover。这个指令调用我想使用 5 或 6 个函数的模板弹出框。但我不知道我该怎么做..
    猜你喜欢
    • 1970-01-01
    • 2018-11-16
    • 1970-01-01
    • 2017-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-05
    相关资源
    最近更新 更多