将变量的值传递给angularjs指令

时间:2015-04-23 13:23:14

标签: javascript angularjs angularjs-directive

我是angularjs的新手,我正在学习指令,我正在尝试将值传递给指令,但事情没有用。

html

<genericsearch objectType="tei_org" organisationSearch="organisationSearchEvent"></genericsearch>

指令

directive('genericsearch', [function () {
return {
      restrict: 'E',
      replace: true,
      scope: {
        objectType : '=',

      },
     controller: ['$scope','$element','$rootScope','SearchOrg','MapOrgs','$routeParams','DelOrgs','GetTemplateGroups','FetchOrgs', function($scope,$element,$rootScope,SearchOrg,MapOrgs,$routeParams,DelOrgs,GetTemplateGroups,FetchOrgs){
        $scope.getOrgs = function(objectType, event) {
          if(event.keyCode != 13){
            //$scope.Participants(data);
           $scope.organisationSearchEvent(objectType);
          }
        }
        $scope.organisationSearchEvent = function(filter,objectType){
          SearchOrg().fetch({'filter':filter, 'searchType':objectType}).$promise.then(

          function(value){
            $scope.orgList = value.data;

          },
          function(err){

          });
      }
   }],
    templateUrl : TAPPLENT_CONFIG.HTML_ENDPOINT[0]+'home/search.html'

}
}])

3 个答案:

答案 0 :(得分:0)

您似乎误解了$ scope和/或如何将值传递给函数。

您的控制器的$ scope具有属性objectType。您不需要将此作为参数添加到控制器内的函数中。

相反,您只需通过$scope.objectType访问它。

E.g。

$scope.organisationSearchEvent = function(filter){
          SearchOrg().fetch({'filter':filter, 'searchType':$scope.objectType}).$promise.then(

          function(value){
            $scope.orgList = value.data;

          },
          function(err){

          });
      }

答案 1 :(得分:0)

为此,您可以在指令控制器中使用链接功能。

<强> HTML

<genericsearch objectType="tei_org" organisationSearch="organisationSearchEvent"></genericsearch>

<强>指令

    link:function(scope,elem,attrs) {    
       scope.myParam = attrs.organisationSearch; 
      }

之后,您可以通过范围访问控制器中的myParam

答案 2 :(得分:-1)

这是您使用链接并将其传递给控制器​​的地方。

HTML:

<my-fancy-directive my-attribute="something"></my-fancy-directive>

使用Javascript:

app.directive('myFancyDirective', function() {
   restrict:'E',
   replace:true,
   controller:function($scope){
      $scope.theAttribute = "";
   },

   link:function(scope,elem,attr) {
      attr.$observe('myAttribute',function(newValue,oldValue){
          if(newValue != oldValue)
             scope.theAttribute = newValue;
      })
   }
});

额外提示:要记住链接功能中的变量,只需考虑&#34; sea&#34;。范围,元素,属性