AngularJS - Получить текущий объект из ng-repeat - PullRequest
0 голосов
/ 29 июня 2018

Я работаю над пользовательским профилем типа карты для нашего приложения. Идея состоит в том, чтобы использовать библиотеку AngularJS Material для создания простого интерфейса для пользователей, не являющихся администраторами, для управления другими пользователями, назначенными им.

У меня работает ng-repeat, чтобы получить данные для этих карт, а затем сгенерировать для них разметку, например:

<!-- language: lang-js -->
<div class="col-md-6 md-padding float-left" ng-repeat="user in allUsers">
    <md-toolbar class="row col-md-12 md-hue-5 md-dense px-0">
        <div class="md-toolbar-tools">
            <span class="col-md-10">{{ user.name }}</span>
            <md-button id="managedUserDetails" type="submit" ng-click="null" class="md-fab" aria-label="Click to view profile">
                <md-icon md-svg-src="/images/svg/action/ic_open_in_new_48px.svg"></md-icon> 
            </md-button>
        </div>
    </md-toolbar>

    <div class="row col-md-12 border border-dark">
        <div class="row col-md-12">
            <md-input-container class="md-block col-md-6" flex-gt-xs>
                    <label>Name:</label>
                    <input ng-model="user.name" class="detailDisabled" disabled>
            </md-input-container>

//code continues for other bits, and yes, the tags are closed :)

Мой вопрос касается элемента md-button . В нем я хотел бы использовать функцию, чтобы вызвать расширенное представление этого пользователя, но для этого мне нужны данные с определенной пользовательской карты, в которой живет кнопка. Затем я могу использовать эти данные для заполнения расширенного представления. .

Итак, вопрос:

Есть ли способ сказать Angular «Дайте мне данные, которые вы использовали для генерации родительского элемента?»

Если нет, мне придется подумать, так как все, о чем я могу думать сейчас, это ....... не элегантные решения:)

Ответы [ 2 ]

0 голосов
/ 29 июня 2018

Вы можете передать объект пользователя непосредственно в ng-click, используя ng-init, который будет вызывать этот метод все время, когда элемент генерирует,

<md-button id="managedUserDetails" ng-click="getAdvancedView(user)" class="md-fab" aria-label="Click to view profile">
   <md-icon md-svg-src="/images/svg/action/ic_open_in_new_48px.svg"></md-icon> 
</md-button>

И на вашем контроллере вы можете получить доступ ко всему объекту пользователя по событию нажатия кнопки,

$scope.getAdvancedView = function(user) {
   console.log(user.name);
}
0 голосов
/ 29 июня 2018

Вы можете использовать ng-init = "someFunction(user)"

<div class="col-md-6 md-padding float-left" ng-repeat="user in allUsers"
     ng-init = "someFunction(user)">
...