2016-08-14 10 views
0

私は角度を使ってプロジェクトを進めています。このプロジェクトの 私はドロップダウン指令を作成しました。 このディレクティブは、現在いくつかのページに複数のドロップダウンを持っているし、いくつかの非常に特定の状況下でのHTTPリクエストが(それはそれを送ったと言うaltough)サーバからの回答に応答しませウィルドロップダウンメニュー角度のあるHTTPは非常に特殊な条件では機能しません

を埋めるためにGETリクエストを行い

  1. 要求が
  2. ドロップダウン情報は、それ独自のIDを指定します(特定のビットプロジェクト)

  3. のみFを参照するルーティング角度使用してそれを再ロードすることによって初期ロードで行われますが開始されませんでしたIRSTディレクティブdoesntのその後のドロップダウン指令が

このディレクティブ

app.directive('dropdown', function($http){ 
    return{ 
     restrict:'E', 
     templateUrl:'/templates/dropdown.html', 
     scope:{ 
      selectedid:'=', 
      objectdefinition:'=' 
     }, 
     link:function(scope){ 
      scope.visible = false; 

      $http.get("/api/" + scope.objectdefinition.key) 
      .then(function(res) { 
       scope.data = res.data 
      },function(){ 

      }); 

      scope.$watch('selectedid',function(newVal){ 
       if(newVal != null){ 
        console.log('made') 
        $http.get("/api/" + scope.objectdefinition.key + '/' + scope.selectedid) 
        .then(function(res) { 
         console.log('received') 
         scope.selectedObject = res.data; 
        },function(){ 

        }); 
       } 
      }) 

      scope.select = function(item){ 
       scope.visible = false; 
       scope.selectedObject = item 
       scope.selectedid = item._id 
      } 

     } 
    } 
}); 

であり、これは、それが

.col-md-8.col-md-offset-2 
    form 
     .form-group 
      button.btn.btn-success(ng-click='save()') Save 
      a.btn.btn-danger(href='/{{object}}') Cancel 
     .form-group(ng-repeat='attribute in current.attributes' ng-switch="attribute.type") 
      label {{attribute.name}} 
      div(ng-if='!attribute.array')    
       input.form-control(ng-switch-when='text' placeholder='{{attribute.name}}' ng-model='$parent.$parent.$parent.data[attribute.name]') 
       datetimepicker(ng-switch-when='date' placeholder='{{attribute.name}}' model='$parent.$parent.$parent.data[attribute.name]') 
      ---->dropdown(ng-switch-when='object' selectedid='$parent.$parent.$parent.data[attribute.name]' objectdefinition='definition[attribute.objectType]') 
       button.btn.btn-default(ng-switch-when='boolean' ng-model='$parent.$parent.$parent.data[attribute.name]' bs-checkbox) 

       input.form-control(ng-switch-default placeholder='{{attribute.name}}' ng-model='$parent.$parent.$parent.data[attribute.name]') 
      div.well(ng-if='attribute.array') 
       .panel.panel-default(style='display:inline-block; margin-right: 10px' ng-repeat='entry in $parent.$parent.data[attribute.name] track by $index') 
        .panel-body 
         input(ng-model='entry').form-control 

、ここではの絵であるビューに呼び出されているが動作しない仕事問題 初期ロードすべてがうまく動作する1ドロップダウンでそれぞれ2件のリクエストが行われた initial load

何とかdoesntの仕事だけで1 HTTP呼び出しが navigated away and back

を返されたので、私は、これは非常に具体的な質問ですが、コードのちょうどこれらの行よりもプロジェクトに少しですが、私は本当に誰かを期待していたことを実現(私は、問題はそれとの何かを持っていると思うので)それ以外の前の角のHTTPサービス

に何か問題があるようです

答えて

0

$ HTTPのこの奇妙な振る舞いに対して、歩いたが、これは動作するようには思えんが、私はいけませんアングルのバージョンがうまくいかない理由を知る

$.get("/api/" + scope.objectdefinition.key + '/' + scope.selectedid,function(res) { 
         scope.selectedObject = res; 
         scope.$apply(); 
        }); 
関連する問題