0

私はangularjsでアプリケーションを開発しており、オートコンプリートを使っています。md-autocompleteのイベントリスナー?

このアプリケーションでは、オートコンプリートでアイテムを選択する前に入力できないフィールドがあります。ここ

、オルデン、ティポデFluxo、Fluxoパイ、及びDescriçãoフィールドは、以下に示すように、2つの他のフィールドの結果に依存して、このフォームのフィールドがある

UCが選択されている場合にのみリリースされます。

フィールドはFluxo Paiです。ここでの選択は、UCとTipo de Fluxoの応答によって異なります。

私はフィルターに使用しているWebServiceを要求することはできません。このフィルターがないため、JavaScriptと関係があります。

私はUCが選択されたときにイベントを使用することを考えていましたが、Fluoを選択した場合、フィルタオーバーフィルターが適用されます。事前に

This is the application released

おかげ

そして最後に、私が使用しているコード。

ビュー

<form name="flowRegister" ng-submit="save()"> 
<div layout="row"> 
    <md-autocomplete flex required md-input-name="flowuc" md-no-cache="noCache" md-selected-item="flow.idusecase" md-search-text="searchText" 
     md-items="item in querySearch(searchText)" md-item-text="item.Description" md-require-match md-floating-label="UC" 
     md-no-asterisk> 
     <md-item-template> 
      <span>{{item.Description}} -- <strong>{{item.Aplication}}</strong> // <strong>{{item.Code}}</strong></span> 
     </md-item-template> 
    </md-autocomplete> 
</div> 
<div layout="row"> 
    <div layout="column" flex="10"> 
     <md-input-container class="md-block"> 
      <label>Ordem</label> 
      <input type="number" name="flowStep" min="0" ng-model="flow.step" required data-ng-disabled="flow.idusecase == null"> 
     </md-input-container> 
    </div> 
    <div layout="column" flex="20"> 
     <md-input-container class="md-block"> 
      <label>Tipo de fluxo</label> 
      <md-select ng-model="flow.idflowtype" required data-ng-disabled="flow.idusecase == null"> 
       <md-option ng-repeat="flowtype in flowtypesVM" value="{{flowtype.Id}}"> 
        {{flowtype.Description}} 
       </md-option> 
      </md-select> 
     </md-input-container> 
    </div> 
    <div layout="column" flex="20"> 
     <md-input-container class="md-block"> 
      <label>Fluxo pai</label> 
      <md-select ng-model="flow.idflowinitial" required data-ng-disabled="flow.idflowtype == 1 || flow.idusecase == null"> 
       <md-option value="0" selected> 
        Nenhum 
       </md-option> 
       <md-option ng-repeat="flowtype in flowtypes" value="{{flowtype.Id}}"> 
        {{flowtype.Description}} 
       </md-option> 
      </md-select> 
     </md-input-container> 
    </div> 
    <div layout="column" flex="60"> 
     <md-input-container class="md-block"> 
      <label>Descrição</label> 
      <input type="text" name="flowDesc" ng-model="flow.desc" required data-ng-disabled="flow.idusecase == null"> 
     </md-input-container> 
    </div> 
    <div layout="column" flex="10" layout-align="top center"> 
     <md-button type="submit" class="md-fab md-primary md-hue-2 md-mini" aria-label="Profile"> 
      <md-icon md-font-set="material-icons">add</md-icon> 
     </md-button> 
    </div> 
</div> 

app 
.controller('flCtrl', function ($rootScope, $scope, $flow, $flowtype, $usecase, $timeout, $q) { 

    $rootScope.menu = "Cadastro de Flow"; 

    $scope.flow = { id: 0, usercreate: "app.outros" }; 

    // $scope.usecases = loadAll(); 

    $usecase.load(function (usecases) { 
     $scope.usecases = usecases.result; 
    }, function (err) { 
     console.log(err); 
    }); 

    // console.log($scope.usecases); 

    $scope.selectedItem = null; 
    $scope.searchText = null; 
    $scope.querySearch = querySearch; 

    $flowtype.load(function (flowtypes) { 
     $scope.flowtypesVM = flowtypes.result; 
    }, function (err) { 
     console.log(err); 
    }); 

    $flow.load(function (flowsvm) { 
     $scope.flowsvm = flowsvm; 
    }, function (err) { 
     console.log(err); 
    }); 

    $scope.usecaseflows = []; 

    $scope.save = function() { 
     // alert("Olá"); 
     var flow = $scope.flow; 
     flow.idusecase = $scope.flow.idusecase.Id; 
     var param = [flow]; 
     $flow.save(param) 
      .then(function (resolve) { 
       alert("Ok!"); 
       $scope.flowRegister.$setPristine(); 
       document.flowRegister.reset(); 
      }) 
      .catch(function (reject) { 

      }) 
    } 

    function querySearch(query) { 
     var results = query ? $scope.usecases.filter(createFilterFor(query)) : $scope.usecases; 
     return results; 
    } 

    function createFilterFor(query) { 
     return function filterFn(usecases) { 
      return (usecases.Description.indexOf(query) === 0); 
     }; 

    } 
}); 

答えて

0

は、私はあなたがこのような何かができると思いコントローラ:

app.controller('flCtrl', function ($rootScope, $scope, $flow, $flowtype, $usecase, $timeout, $q) { 

     ... 

     $scope.$watch('flow', function(){ 

      if(flow.idflowtype && flow.idusecase) { 

       // call apply filter function here 

      } 


     }) 


    }) 
関連する問題