2015-10-08 5 views
0

У меня возник вопрос о переменных по охвату и видимости. В настоящее время у меня есть две переменные контроллера:переменная переменной AngularJS - использовать переменные различной области действия

vm.selectedUser vm.selectedUserRole

Проблема заключается в том, что я генерации таблиц в нг-повтор петли и все входы и выбирает в различных таблицы разделяют эти две упомянутые выше переменные.

Мой вопрос теперь будет, как я могу использовать эти два параметра выше в моем методе:

vm.addInstitutionUserConnection(institutionUserConnectionContent.institution, institutionUserConnectionContent, selectedUser, selectedUserRole) 

есть ли шанс, чтобы сделать это, потому что вход, выберите элементы и диапазон-кнопочного элемента (добавить пользователя) имеют разные области (это моя догадка - я точно не знаю)

Большое спасибо за помощь!

<div ng-repeat="institutionUserConnectionsOfInstitution in vm.institutionUserConnectionsOfInstitutions"> 
<div ng-repeat="institutionUserConnectionContent in institutionUserConnectionsOfInstitution.institutionUserConnectionContents"> 
    <div ng-show="addUser" class="row"> 
     <table> 
      <tr> 
       <td class="adduserinput"> 
        <input 
         type="text" 
         class="form-control" 
         placeholder="Benutzer durchsuchen" 
         ng-model="vm.selectedUser" 
         typeahead="user as vm.userLabelFormatter(user) for user in vm.getUsersByTerm($viewValue) | limitTo:5" 
         typeahead-min-length="3" 
         typeahead-wait-ms="100" 
         typeahead-editable="false" /> 
       </td> 
       <td class="adduserroles"> 
        <select class="form-control" ng-model="vm.selectedUserRole" ng-options="role as role for role in vm.roles"> 
        </select> 
       </td> 
       <td> 
        <span class="input-group-btn"> 
         <button class="btn btn-default" type="button" ng-click="vm.addInstitutionUserConnection(institutionUserConnectionContent.institution, institutionUserConnectionContent)">add user</button> 
         </span> 
       </td> 
      </tr> 
     </table> 
    </div> 
</div> 

+0

Вы пытались использовать их в вызове метода? – levi

+0

просто назовите их с помощью vm. все должно быть в порядке? – Icycool

ответ

1

ли это так -

<div ng-repeat="institutionUserConnectionsOfInstitution in vm.institutionUserConnectionsOfInstitutions"> 
<div ng-repeat="institutionUserConnectionContent in institutionUserConnectionsOfInstitution.institutionUserConnectionContents"> 
    <div ng-show="addUser" class="row"> 
     <table> 
      <tr> 
       <td class="adduserinput"> 
        <input 
         type="text" 
         class="form-control" 
         placeholder="Benutzer durchsuchen" 
         ng-model="institutionUserConnectionContent.selectedUser" 
         typeahead="user as vm.userLabelFormatter(user) for user in vm.getUsersByTerm($viewValue) | limitTo:5" 
         typeahead-min-length="3" 
         typeahead-wait-ms="100" 
         typeahead-editable="false" /> 
       </td> 
       <td class="adduserroles"> 
        <select class="form-control" ng-model="institutionUserConnectionContent.selectedUserRole" ng-options="role as role for role in vm.roles"> 
        </select> 
       </td> 
       <td> 
        <span class="input-group-btn"> 
         <button class="btn btn-default" type="button" ng-click="vm.addInstitutionUserConnection(institutionUserConnectionContent.institution, institutionUserConnectionContent, institutionUserConnectionContent.selectedUser, institutionUserConnectionContent.selectedUserRole)">add user</button> 
         </span> 
       </td> 
      </tr> 
     </table> 
    </div> 
</div> 

Объяснение -

Я только что изменил виртуальную машину на institutionUserConnectionContent. причина - так как в таблице будет несколько строк (ng-repeat), если вы используете vm, вы в конечном итоге перепишете один и тот же selectedUser и selectedUser из одной строки с другой.

Надеюсь, это поможет.