我们如何将输入字段值(在数组中)与来自提交的其他输入字段进行连接

时间:2018-02-12 12:50:16

标签: javascript php arrays angularjs forms

我正在编辑表单的输入字段数据,我知道要问的是什么,不是提交表单数据的方法,但我完全坚持在ng-model中获取值datetimepicker(实际上我需要说我得到了ng-model中的值,但没有得到数组,因为我得到了另一个数组的值,名为editAdsData)。所以我想单独提交一些输入字段的值。我知道大多数ppl将是混淆了我想问的问题。让我们看一下我的代码,一切都很清楚。

在视图中:

//创建表单

 <form ng-submit="edit_jobs('<?php echo $employer_jobs->id; ?>','<?php echo $employer_jobs->employer_id; ?>')" class="form-preview-display" method="post"  name="submitAdsForm">
    <input type = "hidden" ng-init="editAdsData.comp_name = '<?php echo $employer_jobs->comp_name;?>'">
    <input placeholder="Company Name" id="company_name" value="" name="company_name" ng-model="editAdsData.comp_name" ng-pattern = "/^[a-zA-Z ]*$/" minlength="2" maxlength="150" required form-field="submitAdsForm" type="text" class="form-control">
    <input type = "hidden" ng-init="start_date = '<?php echo $employer_jobs->start_date;?>'">
    <input type='text' class="form-control" id="start_date" name="start_date" ng-model="start_date" datetime-picker date-only />
</form>

所以editAdsData是一个数组,我想存储所有输入字段值。但我仍然困惑为什么我在editAdsData中获取start_date的值。 这就是为什么我试图单独发布它。

所以在Controller:

  $scope.edit_jobs = function($id,$emp_id){
           Data.editJobs($.param($scope.editAdsData),$.param($scope.start_date),$.param($scope.end_date),$id,$emp_id).success(function (data) {
            if (data.status == 0) {
                // location.reload();
            }else{
                // location.reload();
            }   
        });
    };

在服务中:

 this.editJobs = function ($data1,$data2,$data3,$id,$emp_id) {
    return $http.post(site_url + "User/User/editJobsData/" + $id + "/" + $emp_id , $data1 + "<br>" + "[start_date]=>" + $data2 + "<br>" + "[end_date]=>" + $data3);
};

现在我希望data1,data2和data3的值应该是concatnate,因为我们得到单个数组的值,如:

(
[comp_name] => abc
[min_salary] => 123
[max_salary] => 12345
)

所以,任何人都可以帮助我得到这个。任何帮助将不胜感激。

提前致谢。

1 个答案:

答案 0 :(得分:0)

为什么不将所有输入字段放在与文档的以下链接相同的对象中:https://docs.angularjs.org/guide/forms。因此所有ng-model都是object.property。

<input placeholder="Company Name" id="company_name" value="" name="company_name" ng-model="user.comp_name" class="form-control">
<input type='text' class="form-control" id="start_date" name="start_date" ng-model="user.start_date" datetime-picker date-only />
<input type="submit" ng-click="save(user)" value="Save" />

在你的控制器中只需粘贴保存功能:

$scope.save= function(user) {
  $scope.user = angular.copy(user);
};

试试这样。您不需要函数中的$ id和$ emp_id,因为您正在传递这些值。使用editAdsData.start_date更改start_date和end_date,并将editAdsData变量声明为对象。

<form ng-submit="edit_jobs('<?php echo $employer_jobs->id; ?>','<?php echo $employer_jobs->employer_id; ?>')" class="form-preview-display" method="post"  name="submitAdsForm">
    <input type = "hidden" ng-init="editAdsData.comp_name = '<?php echo $employer_jobs->comp_name;?>'">
    <input placeholder="Company Name" id="company_name" value="" name="company_name" ng-model="editAdsData.comp_name" ng-pattern = "/^[a-zA-Z ]*$/" minlength="2" maxlength="150" required form-field="submitAdsForm" type="text" class="form-control">
    <input type = "hidden" ng-init="start_date = '<?php echo $employer_jobs->start_date;?>'">
    <input type='text' class="form-control" id="start_date" name="start_date" ng-model="editAdsData.start_date" datetime-picker date-only />
    <input type='text' class="form-control" id="end_date" name="end_date" ng-model="editAdsData.end_date" datetime-picker date-only />
</form>

var editAdsData = {};
$scope.edit_jobs = function(id, emp_id, editAdsData){
           editAdsData = angular.copy(editAdsData);
           Data.editJobs(editAdsData, editAdsData.start_date, editAdsData.end_date, id, emp_id).success(function (data) {
            if (data.status == 0) {
                // location.reload();
            }else{
                // location.reload();
            }   
        });
};