【问题标题】:making a JSON from multiple input with angularjs使用 angularjs 从多个输入生成 JSON
【发布时间】:2015-09-24 18:57:27
【问题描述】:

我是 ionic、angular 和 firebase 的新手。这可能是一个荒谬的问题:)

我正在使用 ionic + firebase 制作一个应用程序,我想从多个输入中制作一个 JSON。我有一个如下所示的界面(图片)。

我应该怎么做才能将“菜单”作为 key 并将“价格”作为 value 的 JSON。 上图是显示意外结果,结果一定是这样的

[{"yakiniku":"2000","ramen":"1200"}]

查看

<div class="row">
    <div class="col">
      <div class="item item-divider">
        Menu
      </div>
      <label class="item item-input">
        <input type="text" ng-model="menu_resto[0].menu1" name="menu_resto[]" placeholder="Menu">
      </label>
      <label class="item item-input">
        <input type="text" ng-model="menu_resto[1].menu2" name="menu_resto[]" placeholder="Menu">
      </label>
    </div>
    <div class="col">
      <div class="item item-divider">
        Price
      </div>
      <label class="item item-input">
        <input type="text" ng-model="menu_resto[0].price1" name="menu_resto[]" placeholder="Price">
      </label>
      <label class="item item-input">
        <input type="text" ng-model="menu_resto[1].price2" name="menu_resto[]" placeholder="Price">
      </label>
    </div>
  </div>
  {{menu_resto}}

控制器

resto.controller('DaftarRestoCtrl',function($scope,DB,$firebaseArray){
  $scope.menu_resto = [];
});

谢谢你:)

【问题讨论】:

  • 在您的标记中...保存按钮在哪里?
  • 这种结构不是一个好主意....保持您的属性名称相同...[{name: "yakiniku", price: 2000},{name: "ramen", price: 1500}]。当您处理结构一致的重复项目时,这会容易得多。还有当你需要搜索firebase时
  • 在我的完整代码上有保存按钮,但在这个问题中,我只想通过{{menu_resto}} 显示结果,如果您可以在我的 View 底部看到文件.. :)

标签: javascript json angularjs firebase


【解决方案1】:

我假设第一个数组在您的控制器上的某个地方可用,并且编辑实际上改变了这个数组。如果是这种情况,一个简单的 for each 遍历该数组并构建一个字符串就足够了。我不知道您可以调用什么来将数组展平为 JSON 字符串。

【讨论】:

    【解决方案2】:

    这个问题归结为纯 JavaScript。 请不要索引您的数据两次。调用模型变量就够了

    menu_resto[0].menu
    menu_resto[0].price
    menu_resto[1].menu
    menu_resto[1].price
    ...
    

    然后,您需要做的就是,在单击安全按钮时,将以下函数与ng-click="json = genJSON()" 绑定:

    $scope.json = {};
    $scope.genJSON = function () {
       return $scope.menu_resto.map(function (entry) {
           var newObj = {};
           newObj[entry.menu] = entry.price;
           return newObj;
       })
    }
    

    在问下一个问题之前,请考虑阅读一本关于 javascript 的基础书籍和一些关于 Angular 的教程。

    【讨论】:

    • 感谢您的回答和建议,我将进一步了解 javascript 和 angularjs :)
    • 很高兴听到这个消息,并不意味着苛刻,只是我的印象是平均问题质量越来越下降,如果有更多的人真的会这样,我会很高兴在将东西交给社区之前进行自己的研究。我希望你没有受到任何冒犯。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-04
    • 2019-06-29
    • 2017-01-07
    • 1970-01-01
    • 1970-01-01
    • 2021-05-20
    • 1970-01-01
    相关资源
    最近更新 更多