0

人のチェックボックスのリストがあり、ビューの別の領域で選択された各人に関する情報を表示するイベントをトリガーする必要があります。コントローラーで実行するイベントを取得し、スタッフ情報の配列を更新しています。ただし、ビューはこの情報で更新されません。これはおそらく何らかのスコープの問題だと思いますが、機能するものは見つかりません。$watch を追加しようとしましたが、コードは既に実行されていると考えているようです。また、ディレクティブを追加しようとしましたが、この作業を改善するものは何もないようです。私はAngularに非常に慣れていないため、これに関するヘルプをどこで探すべきかわかりません。

私の見解には次のものが含まれます。

<div data-ng-controller="staffController as staffCtrl" id="providerList" class="scrollDiv">
    <fieldset>
        <p data-ng-repeat="person in staffCtrl.persons">
            <input type="checkbox" name="selectedPersons" value="{{ physician.StaffNumber }}" data-ng-model="person.isSelected"
               data-ng-checked="isSelected(person.StaffNumber)" data-ng-change="staffCtrl.toggleSelection(person.StaffNumber)" />
            {{ person.LastName }}, {{ person.FirstName }}<br />
        </p>
    </fieldset>
</div>
<div data-ng-controller="staffController as staffCtrl">
    # of items: <span data-ng-bind="staffCtrl.infoList.length"></span>
    <ul>
        <li data-ng-repeat="info in staffCtrl.infoList">
           <span data-ng-bind="info.staffInfoItem1"></span>
        </li>
    </ul>
</div>

私のコントローラーには以下が含まれています:

function getStaffInfo(staffId, date) {
    staffService.getStaffInfoById(staffId)
        .then(success)
        .catch(failed);
    function success(data) {
        if (!self.infoList.length > 0) {
           self.infoList = [];
        }
        var staffItems = { staffId: staffNumber, info: data };
        self.infoList.push(staffItems);
    }
    function failed(err) {
        self.errorMessage = err;
    }
}
self.toggleSelection = function toggleSelection(staffId) {
    var idx = self.selectedStaff.indexOf(staffId);

    // is currently selected
    if (idx >= 0) {
        self.selectedStaff.splice(idx, 1);
        removeInfoForStaff(staffId);
    } else {
        self.selectedStaff.push(staffId);
        getStaffInfo(staffId);
    }
};

前もって感謝します!!

4

1 に答える 1