【问题标题】:AngularJS formData without ng-model没有 ng-model 的 AngularJS formData
【发布时间】:2015-03-27 10:28:17
【问题描述】:

我有可能是一个奇怪的情况: 我有一个表格可以编辑/更新来自不同对象(作为服务)的信息。

我想要实现的是:我想使用 ng-model 将输入字段链接到相关对象但是在提交表单时我想获得一个 formData 对象以通过 POST 发送。问题是:如何将 Angular 的 Form 对象转换为 formData 对象?我不是说循环或无聊的东西,以前有人做过吗?

HTML

<form name="Ctrl.form" ng-submit="Ctrl.submit()" ng-controller="MyController as Ctrl">
   <input type="text" name="full_name" ng-model="Ctrl.user.fullName">
   <input type="text" name="cart_total" ng-model="Ctrl.cart.gross_total">
   <input type="city" name="city" ng-model="Ctrl.dropship.city">
</form>

控制器

this.user = User.getData();
this.cart = Cart.get();
this.dropship = User.addressBook.getDropShip();

this.submit = function() {
   // transform this.form into formData
}

这有意义吗?我错过了什么吗?

谢谢! 真心的

编辑:表单包含(从)多个对象(收集信息),但并非它们的所有属性都可以发布。我希望这更有意义

【问题讨论】:

    标签: javascript angularjs


    【解决方案1】:

    您已经有一个绑定到表单输入字段的用户对象 - 只需将其传递给您的提交函数:

    HTML

    <form name="Ctrl.form" ng-submit="Ctrl.submit(Ctrl.user)" ng-controller="MyController as Ctrl">
       <input type="text" name="full_name" ng-model="Ctrl.user.fullName">
    </form>
    

    控制器

    this.user = User.getData();
    this.submit = function(user) {
         $http({ method:'POST', url: 'AddUser', data: user })
            .success(function() {
                 ...
            });       
    }
    

    【讨论】:

    • 好点!我缺乏解释。表单包含多个对象,某些属性不得发送。
    【解决方案2】:

    当将对象作为参数放入javascript函数中时,您通过引用传递它,因此您获得的服务对象不是副本,而是该对象的地址,因此每个操作都绑定到视图。这将允许对多个视图重复使用服务

    【讨论】:

    • 嗯...是的。我慢慢意识到这听起来像是一个超级 N00b 问题? :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-05
    • 2018-11-14
    • 2013-05-14
    • 2017-11-19
    相关资源
    最近更新 更多