Мой angular не может получить значение со страницы html

#javascript #angularjs #rest #spring-boot #thymeleaf

#javascript #angularjs #остальное #весенняя загрузка #thymeleaf

Вопрос:

У меня есть функция angular для вызова службы rest, но она не может получить значение из HTML-файла. когда я нажимаю отправить, появляется $scope.ProductForm, хотя у меня все еще есть значение на моей HTML-странице.

Main.js

 $scope.products = [];
$scope.productForm = {
    ID:1,
    Name:"",
    Description:"",
    URL:""
};

_refreshProductData();

//Add or Update Product
$scope.submitProduct = function() {  
    var method = "";
     
    if ($scope.productForm.ID == -1) {
        method = "POST";
    } else {
        method = "PUT";
    }
     
    $http({ 
        method: method,
        url: '/product',
        data: angular.toJson($scope.productForm),
        headers: {
            'Content-Type': 'application/json'
        }
    }).then(_success, _error);
 }
  

index.html

 <form ng-submit="submitProduct()">
    <table border="0">
        <tr>
            <td>ProductID</td>
            <td>{{productForm.ID}}</td>
        </tr>
        <tr>
            <td>Product Name</td>
            <td><input type="text" ng-model="productForm.Name" /></td>
        </tr>
        <tr>
            <td>Product Description</td>
            <td><input type="text" ng-model="productForm.Description"  /></td>
        </tr>
	    <tr>
            <td>Product URL</td>
            <td><input type="text" ng-model="productForm.URL"  /></td>
        </tr>
        <tr>
            <td colspan="2">
                <input type="submit" value="Submit" class="blue-button" />
            </td>
        </tr>
    </table>
</form>  

данные: angular.toJSON ($scope.ProductForm) могут иметь значение из index.html

Ответ №1:

Как уже говорили другие, вам нужно решить ряд проблем.

  1. main.js не имеет определенной функции _refreshProductData . Я предполагаю, что это нарушает ваш скрипт и почему $scope.submitProduct() не выполняется.
  2. При определении вашей _refreshProductData функции вам необходимо прикрепить ее к контроллеру $scope (т. $scope._refreshProductData = function(){//refresh data} Если вы хотите, чтобы она была доступна для шаблона html. В противном случае вам не нужно было бы присоединять $scope к нему. Вам нужно будет обновить свой вызов этой функции на основе выбранного вами подхода.

Ответ №2:

 $scope._refreshProductData();-->  you should call your function this way.
_refreshProductData();-->_refreshProductData is not defined(F12)
  

Я предположил, что функция была создана в моем предыдущем ответе.

 1)create your function in main.js
   $scope._refreshProductData() = function()
   {
     write codes here...  
   }
  

затем вызовите функцию на месте

 2) $scope._refreshProductData();
  

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

1. Хотя этот код может решить вопрос, объяснение того, как и почему это решает проблему, действительно помогло бы улучшить качество вашего поста и, вероятно, привело бы к большему количеству голосов «За». Помните, что вы отвечаете на вопрос для читателей в будущем, а не только для человека, задающего сейчас. Пожалуйста, отредактируйте свой ответ, чтобы добавить пояснения и указать, какие ограничения и допущения применяются.

2. когда я меняю форму, _refreshProductData(); -> $scope. _refreshProductData(); ошибка: $ scope. _refreshProductData не является функцией

3. можете ли вы поделиться всем кодом. Вы уверены, что у вас есть функция с именем _refreshProductData в main.js.создайте свою функцию в main.js ($область видимости. _refreshProductData = function(){ напишите коды здесь }), затем вызовите функцию на месте ($scope. _refreshProductData()_refreshProductData())