У меня есть проблема привязки события к заполненному AJAX элементу списка.Я хочу иметь возможность открывать форму и заполнять ее поля на основе значений элемента списка - PullRequest
0 голосов
/ 18 октября 2018

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

Это код для элементов списка, которые являютсяотправлено в исходную форму

include_once("test1.php");

$postdata = file_get_contents("php://input");
$request = json_decode($postdata, true);

$search= $request['search'];
$searchLabel= $request['searchItem'];

$newConnect= new connect();
$newConnect->dataform($search, $searchLabel);
class connect
{
    public function dataform($search, $searchLabel)
    {

    $test= new db_test1();
    $test->build_search($search, $searchLabel);
   $i = 1;
   while ($test->build_fetch(3))
   {
      $test_array = array();

      $test_array[0] = $test->src->PersonID;
      $test_array[1] = $test->src->LastName;
      $test_array[2] = $test->src->FirstName;


        foreach ($test_array as $ele)
        {
          $stmt .= <<<HTML
<div style="display: inline-block; width: 33%; padding: 20px;" >$ele</div>
HTML;
}

    echo <<<HTML
<li  tabindex="$i" id="listSelect" data-ng-model="model.$test_array[0]" 
data-ng-dbl-click="showForm()" class="list-group-item" style="li">$stmt</li>
HTML;

    $i++;

     }

  }
}

и html-часть файла оригинальной формы, которая собирается получить элементы списка в неупорядоченный список с помощью ng-bind html в ответ на приведенный выше код

<div class="panel-body" data-ng-show="searchForm.\$submitted">

    <button class="btn btn-success text-right" data-ng- 
    click="showForm()">EDIT</button>

    <ul class="list-group" data-ng-bind-html="templateURLSearch">
    </ul>
</div> 

контроллер приложения

var app = angular.module("myApp", []);
app.controller('myCtrlSearch', function ($scope, $http , $sce) {
         $scope.runSearch = function () {


        $http({
            method: 'POST',
            url: 'Connect-test1.php',
            data: {
                search: $scope.search,
                searchItem: $scope.searchItem
            },
            headers: {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'}
        }).then(function (response) {
            $scope.templateURLSearch= $sce.trustAsHtml(response.data);
        })
    };
});

1 Ответ

0 голосов
/ 19 октября 2018

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

include_once("test1.php");

$postdata = file_get_contents("php://input");
$request = json_decode($postdata, true);

$search= $request['search'];
$searchLabel= $request['searchItem'];

$newConnect= new connect();
$newConnect->dataform($search, $searchLabel);



class connect
{
  public function dataform($search, $searchLabel)
  {

    $test= new db_test1();
    $test->build_search($search, $searchLabel);
    $test_array = array();
         $i = 0;
         while ($test->build_fetch(3))
        {
             $test_array[$i]['ID'] = trim($test->src->PersonID, '""');
             $test_array[$i]['lastname'] = $test->src->LastName;
             $test_array[$i]['firstname'] = $test->src->FirstName;

                $i++;
        }

     $json= json_encode($test_array);
         echo $json;
  }
}

Я изменил HTML на этот

<div class="panel-body" data-ng-show="searchForm.\$submitted" style="background- 
color: #F0F8FF;">

    <ul class="list-group">
        <li  data-ng-repeat="row in rows track by \$index">

            <div style="display: inline-block; width: 25%; padding: 20px;" > 
{{row.ID}}</div>
            <div style="display: inline-block; width: 25%; padding: 20px;" > 
{{row.lastname}}</div>
            <div style="display: inline-block; width: 25%; padding: 20px;" > 
{{row.firstname}}</div>

                <button class="btn btn-success text-right" data-ng- 
click="showFilled(row)">EDIT</button>

        </li>
     </ul>
 </div>   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...