2015-05-22 3 views
2

Мне нужно позвонить $http.get функция из директивной ссылки в AngularJS, вот мой код ... это функция автозаполнения.

или есть способ вызвать контроллер из функции директивной ссылки?

Вот код

.directive('ionSelect',function(){ 

'use strict'; 
return{ 
    restrict: 'EAC', 
    scope: { 
     label:'@', 
     labelField:'@', 
     provider:'=', 
     ngModel: '=?', 
     ngValue: '=?', 
     myFunctionToCall : '=' 

    }, 
    require: '?ngModel', 
    transclude : false, 
    replace: false, 
    template: 
       '<div class="selectContainer">' 
       // +'<label class="item item-input item-stacked-label">' 
         // +'<span class="input-label">{{label}}</span>' 
        // +'<div class="item item-input-inset">' 
          +'<label class="item item-input" >' 
           +'<i class="icon ion-ios-search-strong"></i>' 
           +'<input id="filtro" type="search" ng-model="ngModel" style="padding: 5px;" ng-value="ngValue" ng-keydown="onKeyDown()"/>' 
        //   +'</label>' 
         //  +'<button class="button button-small button-clear" ng-click="open()">' 
         //   +'<i class="icon ion-chevron-down"></i>' 
         //  +'</button>' 
        // +'</div>' 
        +'</label>' 
        +'<div class="optionList padding-left padding-right" ng-show="showHide">' 
    +'<ion-scroll>' 
         +'<ul class="list">' 
    +'<li class="item" ng-click="selecionar(item)" ng-repeat="item in provider | filter:ngModel" >{{item[labelField]}}</li>'      
         +'</ul>' 
    +'</ion-scroll>' 
        +'</div>'  
       +'</div>' 
     , 


    link: function (scope, element, attrs,ngModel) { 
     scope.ngValue = scope.ngValue !== undefined ? scope.ngValue :'item'; 

     scope.ontouch1 = function(item){ 
      console.log(item[labelField]);alert(1); 
     }; 

     scope.selecionar = function(item){ 
      ngModel.$setViewValue(item); 
      scope.showHide = false; 
     }; 

     element.bind('click',function(){ 
      element.find('input').focus(); 
     }); 

     scope.open = function(){ 

       scope.ngModel = ""; 
      return scope.showHide=!scope.showHide; 
     }; 

     scope.onKeyDown = function(){ 
      scope.showHide = true; 
      if(!scope.ngModel){ 
       scope.showHide = false; 
      } 
     } 

     scope.$watch('ngModel',function(newValue){ 
      if(newValue) 

     element.find('input').val(newValue[scope.labelField]); 

     if(newValue[scope.labelField]!== undefined){ 

      alert(newValue[scope.labelField]); 

На данный момент мне нужно позвонить $http.get функцию запроса к базе данных

продолжение кода:

   } 
      }); 
     }, 
    }; 
}) 

Я новый к этому кодированию, пожалуйста, помогите ...

+0

Определить эту ссылку внутри рамки директивы и transclude, где вы хотите в шаблоне – Fals

+0

может у пожалуйста, сделать его немного более ясно ?? – A4u

ответ

4

просто включить $http в вашу декларацию директивы назвать позже

.directive('ionSelect',function($http){ 
+0

Я получаю эту ошибку: ReferenceError: http не определен at Object.fn (menu.js: 291) at Scope. $ Get.Scope. $ Digest (ionic.bundle.js: 22942) at Scope. $ get.Scope. $ apply (ionic.bundle.js: 23205) в HTMLLIElement. (ionic.bundle.js: 53457) на HTMLLIElement.eventHandler (ionic.bundle.js: 11713) на triggerMouseEvent (ionic.bundle.js: 2863) на tapClick (ionic.bundle.js: 2852) на HTMLDocument.tapMouseUp (ionic.bundle.js: 2925) – A4u

+0

жаль, что это была моя ошибка .... вы правы ... спасибо, спасибо много ... :) – A4u

+0

если это правильно и решило вашу проблему, то подтвердите ответ;) – aorfevre

Смежные вопросы