2014-02-11 5 views
0

작업 배열을 반복하면서 ng 반복이 있습니다. 각 작업마다 버튼을 클릭하여 날짜와 사용자를 지정하는 옵션을 볼 수 있습니다. 나는 버튼의 메시지를 설정하여 (Basecamp에서와 같이) 작업 당 할당 된 사용자/날짜 (있는 경우)를 표시하려고합니다. 따라서 아무 것도 할당되지 않은 경우 메시지는 "할당되지 않음 : 기한 없음"으로 지정되며 둘 다 할당되면 "Steve Ballmer : 08/12/2015"라고 표시됩니다. 메시지를 초기화하려고 시도했습니다 :ng-repeat로 버튼 메시지 초기화

ng-init="setOptionsMessage(task) 

문제는 모든 루프에서 동일한 작업 ID로 전달된다는 것입니다. 이 작업을 수행하는 더 좋은 방법이 있습니까?

답변

1

가 NG 반복을 표시 할 수있는 충분한 명성을하지 않습니다 당신이하고있는 것을 설명하는 데 도움이되는 라인. 그러나, 당신이 함수를 호출하고 버튼에 대한 데이터로 정보를 반환해야한다고 생각합니다.

<div ng-controller="Ctrl"> 
    <div ng-repeat='button in buttons'> 
     <button ng-click="DoSomething(button.Action)">>{{button.Title}}</button> 
    </div> 
</div> 

이것은 컨트롤러가 검색된 데이터를 기반으로 제목을 채웠다 고 가정합니다. 역동적으로 할 수도 있지만, 시작하는 데 도움이되는 간단한 예제입니다.

1

몇 가지 코드를 공유 할 수 있습니까? 내가 정확하게 문제를 이해하지 못하는,하지만 어쩌면이 도움이 될 수 : http://plnkr.co/edit/oKxIk8Dg8nyCy3PxmS82?p=preview

어쩌면 그것은 단지 코멘트를해야하지만, 나는 의견 :

1

도움 주셔서 감사합니다. 나는 위에서 언급 한 것과 같은 것을했다. 각 li에 대해 init 함수를 실행합니다. 각 함수는 각 태스크에 속합니다. 다음은 init 함수입니다.

$scope.setOptionsMessage = function(task) { 
    if(task.asigneeId) { 
     task.optionsMessage = $scope.fullName(task.user); 
     task.optionsMessage += ' | '; 
    } 
    else { 
     task.optionsMessage = 'Not assigned | '; 
    } 

    if(task.dueDate) { 
     task.optionsMessage += 'Due on: ' + task.dueDate; 
    } 
    else if(task.dueEvent === $scope.NEXT_APPOINTMENT) { 
     task.optionsMessage += 'Due at next appointment'; 
    } 
    else { 
     task.optionsMessage += 'No due date'; 
    } 
    } 

이렇게하면 각 작업 개체에 optionsMessage 속성이 추가되어 각 작업의 메시지로 사용할 수 있습니다. 다음은 코드의 해당 부분과 관련된 html (슬림)입니다.

li [ng-repeat='task in uncompletedTasks' ng-init="setOptionsMessage(task)" class='patient-task repeated-item'] 
    span ng-hide="editing" 
    input type="checkbox" ng-click="markComplete(task)" 
    span class="task-text" {{task.text}} 

    span class="task-popover-link" 
     span class="click-link" ng-click="optionsShow=!optionsShow" 
     | {{task.optionsMessage}} 
관련 문제