2016-07-14 12 views
2

私はドロップダウンメニューに表示される空白の空白を取り除く方法を理解しようとしています。メニューには含まれていなかった「すべて」オプションがありました。私はそのオプション(恐らく正しい動きではない)を取り除きました。そして時々リフレッシュするとメニューが表示され、空白があり、それ以外のときにコンソールにエラーが表示されます。なぜこの種が存在するのか分かりません。ドロップダウンメニューのオプション/空のスペースを取り除く方法 - 角度のあるJS?

最終的に、私はすべてのオプション(正しい方法)を取り除き、それが残す空白を削除する必要があります。私は、角JS/HTMLであまり慣れていないんだ

<select class="form-control" required 
    id="roleSelector" 
    ng-options="talentRole as talentRole.description for talentRole in talentRoles track by talentRole.id" id="talentRole" 
    ng-change="roleChanged(role)" 
    ng-model="selectedRole"> 
<option ng-if="true" selected="true" value="" class="select-placeholder"><ln code="directive.role.select.tooltip" args=""></ln></option> 
</select> 
<div topic-input 
name-only="topicNameOnly" 
class="row-spacing" 
ng-show="showTopics()" 
ng-model="selectedTopics" 
talent-role-id="selectedRole.id"></div> 

:ここ

define(["app", 
"lodash", 
"service/reference", 
"directives/control/topic-input" 
], function (app) { 
return app.directive('roleSelect', ['Reference', function (Reference) { 
    return { 
     restrict: 'A', 
     scope: { 
      selectedRole: '=', 
      selectedTopics: '=?', 
      presetRole: '=?', 
      topicNameOnly: '@?', 
      notUsePresets:'@?' 
     }, 
     link: function ($scope, elem, attr) { 
      $scope.talentRoles = []; 
      $scope.topicNameOnly = ($scope.topicNameOnly === 'true'); 
      $scope.notUsePresets = ($scope.notUsePresets === 'true'); 
      if(!$scope.presetRole) { 
       $scope.presetRole = {id: -1, code: "ALL", description: "All"}; 
      } // this is where the 'All' option comes from, so I just got rid of this if statement. Not sure if this is the right thing to do 
      if(!$scope.notUsePresets) { 
       $scope.talentRoles.push($scope.presetRole); 
      } 
      Reference.getTalentRoles($scope, function (response) { 
       $scope.talentRoles = response.concat($scope.talentRoles); 
       for(var i = 0;i<$scope.talentRoles.length;i++){ 
        if($scope.selectedRole && $scope.selectedRole.description == $scope.talentRoles[i].description){ 
         $scope.selectedRole = $scope.talentRoles[i]; 
        } 
       } 
      }); 
      $scope.showTopics = function(){ 
       return attr.selectedTopics 
      } 
      $scope.roleChanged = function(role) { 
       $scope.selectedTopics = []; 
      }; 
     }, 
     templateUrl: '/directives/control/role-select.html' 
    }; 
}]) 
}); 

そして、私のHTMLは次のとおりです。

は、ここに私のjsです。しかし、<option></option>タグは、ユーザー側から選択されたものが私の側で(管理者として)選択されたままであることを保証します。そのため、その機能を残す必要があります。私はまた、ng-optionsがこのメニューの母であることを理解しています。だから、おそらくこのタグでいくつかの構成が必要になるでしょう。

はTypeError:

With All

私がif文を削除したときに、私は、コンソール上でこのエラーが出るようだ:ここで

はJavaScriptからif文を削除する前にスナップショットを次のとおりです。定義されていないプロパティ 'description'を読み取ることができません

だから、私はその状態を取り除くことは正しいことではないと推測しています。私が十分に与えていない場合はお詫び申し上げますが、さらに私を助けてくれるように私ができることを教えてください。

答えて

2

ifを削除すると、$ scope初期化からもpresetRole: '=?'を削除する必要があると思います。

はまた、あなたはあなたがifを削除した場合でも、presetRoleがまだtalentRolesに追加されているようだとして、presetRoleへの他の参照をチェックする必要があります。

それが機能するかどうか教えてください。

+0

Worked。ありがとう男 – keslami

+0

クール。問題ない。チェックをクリックすると、回答が正しいと指定できるので、他の人も修正内容を知ることができます。 –

関連する問題