2014-07-21 2 views
1

사용자가 활동을 피드에 브로드 캐스트 할 수있는 정렬 프로파일을 작성할 수있는 사이트를 유지 관리하고 있습니다. 생성 된 모든 프로필을 추적하기 위해 ng-grid를 구현하고 사용자가이 프로필을 만들거나 편집 할 수있게하는 두 개의 단추를 만들었습니다. 현재 유일한 문제는 사용자가 표에서 행을 선택하고 해당 행을 수정하려고하면 드롭 다운 메뉴가 ngModel의 데이터로 자동 채워지지 않습니다. 데이터로 ngModel 초기화 - AngularJS 부트 스트랩 bs-select

내가에 문제가 있어요 양식의 일부입니다

<select ng-model="source.canSendTo" ng-options="value.name for value in sourceCanSendTo" data-style="btn" bs-select></select> 

그리고 컨트롤러 내에서, 나는 sourceCanSendTo 정의가로 :

행 선택에
$scope.sourceCanSendTo = [ {"id":"abc", "name": "ABC"}, {"id":bcd", "name": "BCD"} ... ]; 

, 나는 단순히 설정 소스 = 선택한 항목이고 console.logs는 모든 데이터가 있음을 나타냅니다. 양식의 다른 부분은 올바르게 채워지고 (주로 s), console.log ($ scope.source.canSendTo)는 원본 데이터가 있음을 보여줍니다. 선택이 공백으로 기본값으로 설정되어있는 것입니다. 내가 가지고있는 드롭 다운 선택에서 특정 요소를 미리 선택하려고합니까?

예를 들어 프로필에 'abc', 'bcd'가 선택되어 있으면 해당 프로필을 편집 할 때 드롭 다운 상자에 "선택 항목 없음"대신 "abc, bcd" ?

편집 : 이전에 드롭 다운 상자의 일부 CSS 요소를 제어했다고 말하면서 bs-select에 대한 의견에 답했습니다. 빠른 검색을 통해 막 다른 골목에 이르렀을 때 완전히 잘못된 것처럼 보입니다. . 누군가가 내 생각에 양식을 미리로드 할 때 데이터를 사용하여 모델을 올바르게 초기화하는 방법을 알고 있습니까? 실제로 '선택한 대상 없음'과 반대되는 선택 옵션이 실제로 선택되어 있습니다. 모든 도움에 미리 감사드립니다!

+0

및 (ngModel에 사용되는 변수의 존재는, 명명 규칙의 측면에서 상당히 모호한이었다 그것을 변경하는 것이 실현) 점과 한 번없이, 그 의도 또는 오타가 무엇입니까? –

+0

이것은 의도적 인 것입니다. 나는 변수의 이름을 바꾸어서 혼동을 덜어 주어야한다.이 프로젝트는 처음에는 꽤 혼란 스럽다. sourceCanSendTo에는 사용자가 선택할 수있는 값이 들어 있으며 선택한 값은 $ scope.source.canSendTo. $ scope.source 객체를 모든 프로필을 관리하는 데 사용되는 ngGrid의 객체 배열로 푸시합니다. 혼란스럽게 생각합니다 : x – athoi

+0

'bs-select' 란 무엇입니까? 제 3 자의 지시문입니까? – runTarm

답변

2

당신이 다음 방금 필요 sourceCanSendTo의 이름 (value.name)에 source.canSendTo 결합됨에 따라에 처음이 같은 저장 한 이름을 결합 구조, 뭔가가 : 그래서

source.canSendTo = ['abc', 'bcd']; //And all the selected values 

을 이 구조체에 source.canSendTo 속성을 구성해야합니다.

추신 : 서버에서 데이터를 가져 오는 방법을 보여 주면 source.canSendTo 속성을 구성하는 데 도움을 줄 수 있습니다.

+0

답장을 보내 주셔서 감사합니다! ngGrid 내의 행 선택에서 $ scope.source = selectedRow를 설정하므로 $ scope.source.canSendTo에이 시점에서 필요한 모든 값이 포함됩니다. 실제로 하나씩 개체를 밀어 넣어야합니까? (개체를 바인딩하려고하는데 개체의 "이름"특성을 기반으로 이러한 개체를 선택할 수있게합니다. – athoi

+0

예, 이름 만 source.CanSendTo 속성에 푸시해야합니다. for를 사용하여이를 수행 할 수 있습니다. 이름 대신 ID를 밀어 넣는 것이 좋지만 ng-options 지시문을 변경하여 이름을 표시 할 수 있지만 id를 바인드하려면 ng-options = "value.Id as sourceCanSendTo의 값으로 value.Id"와 같이 지정하십시오. – nramirez

+0

@athoi 그런 다음 ID를 유지하고 초기에 ID 배열을 source.canSendTo와 같은 소스 배열로 해석 할 수 있습니다. source.canSendTo = [ 'abc,'bcd '] – nramirez

0

$ scope.canSendTo는 선택한 옵션에 대한 참조로 초기화해야합니다.

var initialSelection = 0; 
$scope.source = { canSendTo : [ {"id":"abc", "name": "ABC"}, {"id":bcd", "name": "BCD"} ... ] }; 
$scope.canSendTo = $scope.source.canSendTo[initialSelection]; 
0

마지막으로 내 코드를 잘못 무엇인지 발견 - 모델이 ngOptions에 있었던 것과 같은 아니었다 ngOptions와 비트 주위에 놀고 작동 뭔가를 얻을 수 관리에 데이터가 저장되는 것 같아 . 코드의 작동 조각 :

<select ng-model="sendTo.name" ng-option="value.name as value.name for value in sourceCanSendTo" data-style="btn" multiple bs-select> 

한 번`sourceCanSendTo` 당신은`source.canSendTo`이