programing

각도로 선택 초기화 중JS 및 ng-반복

goodjava 2023. 2. 15. 22:02

각도로 선택 초기화 중JS 및 ng-반복

AngularJS 1.1.5에서 ng-repeat을 사용하여 미리 채워진 옵션으로 Select-box를 시작하려고 합니다.대신 선택 항목은 항상 아무것도 선택하지 않은 상태로 시작됩니다.빈 옵션도 있는데, 저는 그것을 원하지 않습니다.저는 아무것도 선택되지 않는 부작용이 있다고 생각합니다.

ng-repeat 대신 ng-options를 사용하여 작업을 할 수 있지만, 이 경우 ng-repeat을 사용하고 싶습니다.압축한 예에서는 알 수 없지만, 각 옵션의 타이틀 속성을 설정하고 싶기 때문에 ng-options를 사용하여 설정할 수 있는 방법은 없는 것으로 알고 있습니다.

나는 이것이 일반적인 AngularJs 범위/프로토타입 상속 문제와 관련이 없다고 생각한다.적어도 나는 바타랑에서 검사할 때 눈에 띄는 것이 아무것도 보이지 않는다.또한 UI를 사용하여 선택 항목에서 옵션을 선택하면 모델이 올바르게 업데이트됩니다.

HTML은 다음과 같습니다.

<body ng-app ng-controller="AppCtrl">
    <div>
        Operator is: {{filterCondition.operator}}
    </div>
    <select ng-model="filterCondition.operator">
       <option 
           ng-repeat="operator in operators" 
           value="{{operator.value}}"
       >
           {{operator.displayName}}
       </option>
    </select>
</body>

JavaScript:

function AppCtrl($scope) {

    $scope.filterCondition={
        operator: 'eq'
    }

    $scope.operators = [
        {value: 'eq', displayName: 'equals'},
        {value: 'neq', displayName: 'not equal'}
     ]
}

JS Fidle : http://jsfiddle.net/coverbeck/FxM3B/2/

네. 올바른 방법을 사용하지 않으려면ng-options, 추가할 수 있습니다.ng-selected에 대한 상태 체크 로직을 가진 Atributeoption사전 선택 작업을 수행하도록 지시합니다.

<select ng-model="filterCondition.operator">
    <option ng-selected="{{operator.value == filterCondition.operator}}"
            ng-repeat="operator in operators"
            value="{{operator.value}}">
      {{operator.displayName}}
    </option>
</select>

Working Demo

선택 태그의 경우 angular는 ng-options 디렉티브를 제공합니다.옵션을 설정하고 기본값을 설정할 수 있는 특정 프레임워크를 제공합니다.다음은 예상대로 동작하는ng-module을 사용한 업데이트된 바이올린입니다.http://jsfiddle.net/FxM3B/4/

업데이트된 HTML(코드 그대로)

<body ng-app ng-controller="AppCtrl">
<div>Operator is: {{filterCondition.operator}}</div>
<select ng-model="filterCondition.operator" ng-options="operator.value as operator.displayName for operator in operators">
</select>
</body>

앵글이 빈 옵션 요소를 선택 항목에 주입하고 있다는 사실은 기본적으로 Angular에 바인딩된 모델 객체가 초기화할 때 빈 값으로 제공된다는 것입니다.

기본 옵션을 선택하려면 컨트롤러의 스코프에서 설정할 수 있습니다.

$scope.filterCondition.operator = "your value here";

빈 옵션 플레이스 홀더를 원하는 경우 이 옵션을 사용할 수 있습니다.

<select ng-model="filterCondition.operator" ng-options="operator.id as operator.name for operator in operators">
  <option value="">Choose Operator</option>
</select>

The Sharpie One이 ng-selected 옵션을 지적해 주셔서 감사합니다.만약 그것이 코멘트가 아닌 답변으로 게재되었다면, 저는 그것을 정답으로 했을 것입니다.

여기 JSFiddle이 있습니다.http://jsfiddle.net/coverbeck/FxM3B/5/

또한 문제의 원인이 아니기 때문에 원래 투고에서 누락되었던 타이틀 속성을 사용하도록 바이올린을 업데이트했습니다(ng-options 대신 ng-repeat을 사용하고 싶은 이유입니다).

HTML:

<body ng-app ng-controller="AppCtrl">
<div>Operator is: {{filterCondition.operator}}</div>
<select ng-model="filterCondition.operator">
   <option ng-repeat="operator in operators" title="{{operator.title}}" ng-selected="{{operator.value == filterCondition.operator}}" value="{{operator.value}}">{{operator.displayName}}</option>
</select>
</body>

JS:

function AppCtrl($scope) {

    $scope.filterCondition={
        operator: 'eq'
    }

    $scope.operators = [
        {value: 'eq', displayName: 'equals', title: 'The equals operator does blah, blah'},
        {value: 'neq', displayName: 'not equal', title: 'The not equals operator does yada yada'}
     ]
}

제안하신 바와 같이 ng-options를 사용해야 합니다만, 안타깝게도 어레이 요소를 디폴트로 참조할 필요가 있다고 생각합니다(어레이가 문자열 배열이 아닌 경우).

http://jsfiddle.net/FxM3B/3/

JavaScript:

function AppCtrl($scope) {


    $scope.operators = [
        {value: 'eq', displayName: 'equals'},
        {value: 'neq', displayName: 'not equal'}
     ]

    $scope.filterCondition={
        operator: $scope.operators[0]
    }
}

HTML:

<body ng-app ng-controller="AppCtrl">
<div>Operator is: {{filterCondition.operator.value}}</div>
<select ng-model="filterCondition.operator" ng-options="operator.displayName for operator in operators">
</select>
</body>

및 material을 하는 경우 md-select 'ng-repeat md-option from angular material'을 할 수 .ng-model-options="{trackBy: '$value.id'}" 펜에 표시된 md-select 태그 애쉬로 이동합니다.

코드:

<md-select ng-model="user" style="min-width: 200px;" ng-model-options="{trackBy: '$value.id'}">
  <md-select-label>{{ user ? user.name : 'Assign to user' }}</md-select-label>
  <md-option ng-value="user" ng-repeat="user in users">{{user.name}}</md-option>
</md-select>

언급URL : https://stackoverflow.com/questions/18647098/initializing-select-with-angularjs-and-ng-repeat