2017-01-20 2 views
3

Так что я делаю мобильное веб-приложение, и у меня есть форма, где они делают встречи и сохраняют их на сервере MySQL. Мне нужно отправить скрытый идентификатор пользователя. У меня это уже есть в ng-init. и у меня есть контроллер, который его получает, и его можно использовать, чтобы поместить его в html. Я не настолько хорош в angularjs на всех. Я в основном использую php для всего и несколько вещей в javascript. Любая помощь будет оценена.Как я могу использовать значение ng для размещения идентификатора пользователя в MySQL

это моя форма.

<div class="login-form" ng-controller="userIdCtrl" ng-init="init('<? echo $usernameid; ?>','<? echo $usernameid; ?>')"> 
    <div class="center" style="margin:5px;color:white;"> 
     <h2>Registro</h2> 
     <form role="form" name="registro" ng-controller="appointmentPostCtrl"> 
     <div class="form-group"> 
      <div class="col-md-9 col-sm-9 col-xs-9"> 
       <select ng-model="especialidad" class="styled-select" required> 
        <option value="">Especilidad</option> 
        <?php echo $especialidades ?> 
       </select> 
      </div> 
     </div> 
     <div class="form-group"> 
      <div class="col-md-9 col-sm-9 col-xs-9"> 
       <select ng-model="facilidad" class="styled-select" required> 
        <option value="">Facilidad</option> 
        <?php echo $facilidades ?> 
       </select> 
      </div> 
     </div> 
     <br> 
      {{ userid }} <!--- test that it works ----->>> 
     <input ng-model="user" ng-value="{{ userid }}"> <!--- actual part that doesn't works it returned empty----->>> 
     <input type="date" ng-model="fecha" class="styled-select" style="width:40%; float:left;"> 
     <input type="time" id="timeInput" name="timeInput" ng-model="hora" placeholder="HH:mm:ss" min="08:00:00" max="17:00:00" required /> 
     <br><br> 
     <div style="margin-top:50px;"> 
      <button ng-click="postData()" class="button button--large " style="background-color:#6CBA45;">Registrar</button> 
      <ons-button modifier="quiet" class="forgot-password" ><a style="text-decoration:none;color:white;" href="login.php">Cancelar</a></ons-button> 
      <span id="message">{{ message }}</span> 
     </div> 
     </form> 
    </div> 
</div> 

Контроллеры один для useri идентификатора, а другой, который обрабатывает сообщение в MySQL

////////////////// userIdCtrl Controller ////////////////////// 
app.controller('userIdCtrl', function ($scope) { 
    $scope.init = function (userid, id) { 

     $scope.id = id; 
     $scope.userid = userid; 

    }; 
}); 
//////////// appointment post Controller/////////////////// ////////// ////////// ////////// ////////// ////////// ////////// ////////// ////////// ////////// //// 
app.controller('appointmentPostCtrl', function ($scope, $http) { 

$scope.postData = function() { 

    $scope.message = ""; 
    var error = 0; 

/*---------------- this is the part that is no working return as empty------ */ 
    if ($scope.user == "" || $scope.user == null) { 
     error = 1; 
    } 
/*--------------------------------------------------------------------- */ 


    if ($scope.especialidad == "" || $scope.especialidad == null) { 
     error = 2; 
    } 
    if ($scope.facilidad == "" || $scope.facilidad == null) { 
     error = 3; 
    } 
    if ($scope.fecha == "" || $scope.fecha == null) { 
     error = 4; 
    } 
    if ($scope.hora == "" || $scope.hora == null) { 
     error = 5; 
    } 

    /*---- Data is validated ------ */ 

    if (error == 0) { 

     var request = $http({ 
      method: "post", 
      url: "https://www.xxxxxxxx.com/angPost.php", 
      data: { 
       user: $scope.user, 
       especialidad: $scope.especialidad, 
       facilidad: $scope.facilidad, 
       fecha: $scope.fecha, 
       hora: $scope.hora 
       }, 
       headers: { 
        'Content-Type': 'application/x-www-form-urlencoded' 
       } 
      }); 
      /* Check whether the HTTP Request is Successfull or not. */ 
      request.success(function (data) { 
       $scope.message = "" + data; 
      }); 
     } else { 
      $scope.message = "You have Filled Wrong Details! Error: " + error; 
     }; 
    }; 
}); 

Я делаю что-то неправильно на логике углового или Мне не хватает ресурсов? Я попытался сделать только один контроллер и не работает. это самый близкий я могу получить на дескрипторе ошибки. я думаю, мне нужен ng-маршрут или, может быть, услуга? нужно немного света. Благодарю.

+0

ли замена 'нг-значение = "{{идентификатор}}"' с 'нг-значение = «userid» «решить проблему? –

+0

Я просто попробовал это и до сих пор пуст, если я что-то не напишу. но мне нужно, чтобы это было спрятано, и я предполагаю, что может сделать что-то в контроллере, но я все еще не понял. –

ответ

1

Во-первых, удалить это из HTML-разметки:

<input ng-model="user" ng-value="{{ userid }}"> 

Затем попробуйте обертывание userid в объект на родительском контроллере:

app.controller('userIdCtrl', function ($scope) { 
    $scope.init = function (userid, id) { 
     $scope.postObj = { 
      id: id 
      userid: userid 
     }; 
    }; 
}); 

И затем изменить контроллер ребенка следующим образом:

if (error == 0) { 

    var request = $http({ 
     method: "post", 
     url: "https://www.ivan-montes.com/websites/MPC_App/php/angPost.php", 
     data: { 
      user: $scope.postObj.userid, // this line should do it! 
      especialidad: $scope.especialidad, 
      facilidad: $scope.facilidad, 
      fecha: $scope.fecha, 
      hora: $scope.hora 
      }, 
      headers: { 
       'Content-Type': 'application/x-www-form-urlencoded' 
      } 
     }); 
     /* Check whether the HTTP Request is Successfull or not. */ 
     request.success(function (data) { 
      $scope.message = "" + data; 
     }); 
    } else { 
     $scope.message = "You have Filled Wrong Details! Error: " + error; 
    }; 
}; 
+0

Я пробовал это и теоретически должен работать. и если я пишу что-то, то он передает значение, но по какой-то причине, если я ставлю значение «hidden», это не работает. Я думаю, что это может быть зависимость, в которой я нуждаюсь. –

+0

Это работает, если вы разделили текстовое поле и скрытое поле вверх? Я обновил ответ выше.- Я не думаю, что это действительно имеет значение, но стоит попробовать. –

+0

он сделал то же самое. это дает мне пустое значение. –

0

Используйте это ng-value="userid". Нам не нужны фигурные скобки для ng-значения.

app.controller('userIdCtrl', function ($scope, $rootScope) { 
    $scope.init = function (userid, id) { 

    $scope.id = id; 
    $rootScope.userid = userid; // around the application you can get this id. no more code 

}; 

});

или

<input ng-model="user" ng-value="$parent.userid"> 

или

app.controller('userIdCtrl', function ($scope) { 
$scope.init = function (userid, id) { 

    $scope.id = id; 
    // $scope.userid = userid; 
    $scope.$broadcast('userID', userid); 

    }; 
}); 


app.controller('appointmentPostCtrl', function ($scope, $http) { 

$scope.postData = function() { 

    $scope.message = ""; 
    var error = 0; 
    $scope.$on('userID', function (event, data) { 
    $scope.userid = data; 
    }); 
}); 

https://docs.angularjs.org/api/ng/directive/ngValue

+0

im, используя идентификатор пользователя с другого контроллера, чтобы установить это значение. я сделал это, но все равно возвращу пусто, если я не напишу что-то там. любая идея, если в контроллере может быть что-то сделано? из идей. –

+0

использовать $ rootScope. см. обновленные ан. И ваш идентификатор пользователя обновляется каждый раз или один раз? –

+0

Возможно, у меня была другая ошибка. я просто попробовал все ваши варианты и не работал на меня. $ rootScope выдает ошибку не определять, а $ parent.userid не отправляет номер. я действительно не знаю, что происходит. третий вариант прерывает работу пост-контроллера. –

Смежные вопросы