Угловой переключатель пользовательского интерфейса не сохраняет включенным при включении

#javascript #php #angular #laravel

#javascript #php #угловой #laravel

Вопрос:

я здесь новичок, надеюсь, вы могли бы помочь мне с моей проблемой, у меня возникли проблемы с сохранением включенного статуса моего углового переключателя пользовательского интерфейса… всякий раз, когда я обновляю страницу, она возвращается к отключенному. но когда я проверяю базу данных, я мог бы обновить значение и выбранное имя параметра для выбранного переключателя пользовательского интерфейса. я хочу сохранять включенный статус моего углового переключателя пользовательского интерфейса всякий раз, когда я его включал

вот мой javascript

 (function () {
    'use strict';

    angular.module('mainApp')
        .controller('AdminSettingsController', AdminSettingsController);

    function AdminSettingsController(
         $scope
         ,$location
         ,AdminSettingsService
         ,$routeParams
    ) {

        $scope.updateSettings = updateSettings;
        $scope.getList = getList;

        $scope.companyId = $routeParams.companyId;

        function updateSettings(key, newStatus) {

            AdminSettingsService.saveSetting(newStatus, key, $scope.companyId).then(function (responseObj) {
                let data = responseObj.data;
                console.log(data.settings)
                let success = data.success;

                $scope.settings = data.settings;

                return data.settings;
            });
        }

          function getList(key){

            AdminSettingsService.getSetting(key).then(function (response) {
                let data = response.data;
                console.log('hardyharhar');
                let success = data.success
            });
        }
    }
})();
 

вот мой html

 <side-nav active-tab="'admin'"></side-nav>
<head-bar></head-bar>

<div class="br-mainpanel">
    <div class="br-pageheader pd-y-15 pd-l-20">
        <nav class="breadcrumb pd-0 mg-0 tx-12">
            <a class="breadcrumb-item" href="#!/home">Dashboard</a>
            <span class="breadcrumb-item active">Admin Settings</span>
        </nav>
    </div>

    <div class="pd-x-5 pd-sm-x-30 pd-t-20 pd-sm-t-2">

        <div class="d-flex align-items-center ">
            <i class="icon ion-settings tx-54" style="margin-right: 1px;"></i>
            <div class="mg-l-20">
                <h4 class="tx-18 tx-gray-800 mg-b-5" style="size: 50px; font-weight: bold">Admin Settings</h4>
                <span class="mg-b-0">Settings for company.</span>
            </div>
            <div id="ch5" class="ht-60 tr-y-1"></div>
        </div>
    </div>

    <div class="br-pagebody">
        <div class="br-section-wrapper">
            <div class="br-pagebody pd-x-20 pd-sm-x-30">
                <div class="card bd-0 shadow-base">
                    <div class="table-responsive">
                            <table class="table table-striped table-bordered mg-b-0">
                                <thead>
                                    <th style="width: 10%" class="text-center">Action</th>
                                    <th style="width: 40%" class="text-center">Settings</th>
                                    <th style="width: 10%" class="text-center">Status</th>
                                </thead>
                                <tbody>
                                <tr class="text-center">
                                    <td>
                                        <switch ng-change="updateSettings('isReimbursementEnabled', reimbursementStatus)" id="state" name="state" ng-model="reimbursementStatus" class="blue"></switch>
                                    </td>
                                    <td class="text-left">
                                        <h4>Reimbursement</h4>
                                        <p>Allows processor to access reimbursement {{ reimbursementStatus }}.</p>
                                    </td>
                                    <td>
                                        <h4> <span class= "{{ reimbursementStatus  ? 'badge badge-pill badge-success' : 'badge badge-pill badge-secondary' }}">
                                           {{ reimbursementStatus ? "Enabled" : "Disabled"}}
                                            </span>
                                        </h4>
                                    </td>
                                </tr>
                                <tr class="text-center">
                                    <td>
                                        <switch ng-change="updateSettings('isReportsEnabled', reportsEnabled)" id="state" name="state"  ng-model="reportsEnabled" class="blue"></switch>
                                    </td>
                                    <td class="text-left">
                                        <h4 class="">Reports</h4>
                                        <p>Allows processor to access reports.</p>
                                    </td>
                                    <td>
                                        <h4> <span class="{{ reportsEnabled ? 'badge badge-pill badge-success' : 'badge badge-pill badge-secondary' }}" >
                                            {{ reportsEnabled ? "Enabled" : "Disabled" }}
                                            </span>
                                        </h4>
                                    </td>
                                </tr>
                                <tr class="text-center">
                                    <td>
                                        <switch ng-change="updateSettings('isAccountsEnabled', accountStatus)" id="state" name="state" ng-model="accountStatus" class="blue"></switch>
                                    </td>
                                    <td class="text-left">
                                        <h4 class="">Accounts</h4>
                                        <p>List of company accounts.</p>
                                    </td>
                                    <td>
                                        <h4><span class="{{ accountStatus ? 'badge badge-pill badge-success' : 'badge badge-pill badge-secondary' }}" >
                                            {{ accountStatus ? "Enabled" : "Disabled" }}
                                            </span>
                                        </h4>
                                    </td>
                                </tr>
                                <tr class="text-center">
                                    <td>
                                        <switch ng-change="updateSettings('isReimbursementRequestLimitEnabled', requestStatus)" id="state" name="state" ng-model="requestStatus" class="blue"></switch>
                                    </td>
                                    <td class="text-left">
                                        <h4 class="">Reimbursement Request Limit</h4>
                                        <p>Sets the reimbursement request limit per year.</p>
                                    </td>
                                    <td>
                                        <h4><span class="{{ requestStatus ? 'badge badge-pill badge-success' : 'badge badge-pill badge-secondary' }}">
                                            {{ requestStatus ? "Enabled" : "Disabled" }}
                                            </span>
                                        </h4>
                                    </td>
                                </tr>
                                </tbody>
                            </table>
                        </div>
                    </div>
                 </div>
               </div>
          <foot-bar></foot-bar>
         </div>
        </div>

 

и вот мой контроллер api

 
namespace AppHttpControllersApi;

use AppCriteriaLimitOffsetCriteria;
use AppHttpControllersController;
use AppModelsAdminSettings;
use AppModelsAccountSettings;
use AppModelsAccount;
use AppRepositoriesAccountRepositoryEloquent;
use AppRepositoriesAdminSettingsRepositoryEloquent;
use IlluminateHttpRequest;
use IlluminateSupportFacadesDB;
use IlluminateSupportFacadesLog;

class AdminSettingApiController extends Controller
{

    private $adminSettingsRepository;
    private $accountRepository;

    public function __construct(
        AdminSettingsRepositoryEloquent $adminSettingsRepo
        ,AccountRepositoryEloquent $accountRepo
    )
    {
        $this->adminSettingsRepository = $adminSettingsRepo;
        $this->accountRepository = $accountRepo;

    }

    public function saveSetting(Request $request) {
        $newStatus = $request->input('newStatus');
        $key = $request->input('key');
        $companyId = $request->input('companyId');


        $result = array(
            'success' => false
        );

        $keyExist = $this->adminSettingsRepository->findByField('setting_name', $key)->first();

        log::debug('thisisKeyExist.......................'.json_encode($keyExist));

        $newStatusData = [
            'setting_name' => $key,
            'status' => $newStatus,
            'company_id' => $companyId
        ];

        try {
            DB::beginTransaction();

            if (!$keyExist) {
                $newStatus = AdminSettings::create($newStatusData);
            }
            else {
                $updateQuery = AdminSettings::where('setting_name', '=', $key);
                              $updateQuery->update($newStatusData);
                }
             $result['success'] = true;
             $result['settings'] = $newStatusData;

             DB::commit();

          } catch (Exception $e) {
            Log::error($e);
            $result['success'] = false;
            $result['messages'] = ['Server has encountered an unexpected error.'];
          }
        return $result;
         }

         public function  list(Request $request){

           $key = $request->input('key');

              $result = array(
                'success' => false
               );

              $keySetting = $this->adminSettingsRepository->findByField('setting_name', $key)->first();

              $keyList = [];
              try {
                    DB::beginTransaction();

                    $keyList = $this->adminSettingsRepository::where('status', '=', 1, 'setting_name')->get();
                    Log::debug('thisIsPrimarykey...................'.json_encode($keyList));

                    $result['key'] = $key;
                    $result['success'] = true;

                    DB::commit();
                  }
              catch (Exception $e){
                Log::error($e);
                  $result['success'] = false;
                 }
             }
        }

 

надеюсь, вы могли бы мне помочь, большое спасибо! 🙂

Комментарии:

1. Я думаю, вы пытаетесь контролировать статус возмещения, верно? где вы на самом деле устанавливаете значение при загрузке / перезагрузке? в какой-то момент вам нужно предоставить repensementstatus значение из базы данных.

2. да, поскольку repensementstatus дает логическое значение, необходимое мне для управления переключателем, я не устанавливаю перезагрузку, просто мне нужно было оставить его включенным, когда я нажал на него enabled, и отключенным, когда мне нужно его отключить…

3. вы сохраняете его в базе данных, которую вы говорите, и вызываете базу данных при каждой загрузке, верно? Я просто не вижу, где вы указываете значение при загрузке страницы. вам нужно что-то добавить в ngoninit, чтобы присвоить значение из базы данных возмещению status

4. не могли бы вы привести мне пример, сэр? где редактировать и где создавать экземпляр?