【问题标题】:AngularJS Cannot get form dataAngularJS无法获取表单数据
【发布时间】:2015-11-19 12:52:29
【问题描述】:

在 AngularJS 中从表单中提取值似乎不起作用 - 例如我的表单代码是:

<form ng-submit="newCompany()">
    <div class="form-group">
        <label>Name</label><input type="text" name="company_name" id="company_name" tabindex="2" ng-model="newCompany.company_name" class="form-control">
        <label>Primary Contact</label><input type="text" name="primary_contact" id="primary_contact" tabindex="2" ng-model="newCompany.primary_contact" class="form-control">
        <label>Address</label><input type="text" name="address" id="address" tabindex="2" ng-model="newCompany.address" class="form-control">
        <label>Function</label><input type="text" name="function" id="function" tabindex="2" ng-model="newCompany.function" class="form-control">
        <label>Telephone</label><input type="text" name="telephone" id="telephone" tabindex="2" ng-model="newCompany.phone" class="form-control">
        <label>Fax</label><input type="text" name="fax" id="fax" tabindex="2" ng-model="newCompany.fax" class="form-control">
        <label>URL</label></label><input type="text" name="url" id="url" tabindex="2" ng-model="newCompany.url" class="form-control">
    </div>
    <div class="form-group">
        <div class="row">
            <div class="col-sm-6 col-sm-offset-3">
                <input type="submit" name="add-submit" id="add-submit" tabindex="10" class="form-control btn btn-primary" value="Add Company">
                <br>
                <div class="text-center">
                    <p ng-show="addCompany"><span class="label label-info">{{ addCompany }}</span></p>
                </div>
            </div>
        </div>
    </div>
</form>

但在控制器中,执行 newCompany.name 或 $scope.newCompany.name 不起作用。它什么也不返回,并说 newCompany 是未定义的。

控制器:

app.controller("CompaniesController", ['$scope', 'Companies', function($scope, Companies) {
    $scope.title = 'Companies';
    $scope.title_sub = 'Add Company';

   $scope.companyData = {
       company_name: newCompany.company_name,
       primary_contact: newCompany.primary_contact,
       address: newCompany.address,
       function: newCompany.function,
       telephone: newCompany.phone,
       fax: newCompany.fax,
       url: newCompany.url
   };

    $scope.addCompany = function() {
        var company = new Companies($scope.companyData);
        company.$save();
    };

    $scope.companies = Companies.query();
}]);

任何人都可以看到哪里出了问题或如何让它工作吗?

【问题讨论】:

  • 你说,提交表单时调用函数newCompany()。我没有看到那个功能。
  • 您尝试调用未定义的newCompany()。你的模型是newCompany...那么它是对象还是函数?您也尝试使用ng-show="addCompany",但addCompany 是一个函数。也许你应该再重新阅读和调试你的代码......
  • stackoverflow.com/questions/33802005/… 又是你。尝试完成我在那里建议的所有步骤,然后如果仍然无法在此处发布。

标签: javascript angularjs


【解决方案1】:

是的newCompany未定义请在使用前定义它会解决您的问题

 $scope.newCompany = {};

   $scope.companyData = {
       company_name: newCompany.company_name,
       primary_contact: newCompany.primary_contact,
       address: newCompany.address,
       function: newCompany.function,
       telephone: newCompany.phone,
       fax: newCompany.fax,
       url: newCompany.url
   };

你也不需要使用$scope.companyData,只需在你的保存函数中使用newCompany

$scope.addCompany = function() {
        var company = new Companies($scope.newCompany);
        company.$save();
    };

如果您在提交数据后使用 console.log(newCompany) 在控制台中看到它已经在您尝试使用 $scope.companyData 创建时带有键值对

【讨论】:

  • 我刚刚这样做了,但它仍然声称它是未定义的。 $scope.newCompany = {}; $scope.companyData = { company_name:newCompany.company_name,primary_contact:newCompany.primary_contact,地址:newCompany.address,功能:newCompany.function,电话:newCompany.phone,传真:newCompany.fax,url:newCompany.url };
  • 请在您的问题中添加更多代码或更好地创建一个小提琴将帮助我们
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-08
  • 1970-01-01
  • 2018-10-25
  • 2014-12-31
  • 2016-07-10
  • 1970-01-01
相关资源
最近更新 更多