首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >更新与angularjs中单击次数有关的视图

更新与angularjs中单击次数有关的视图
EN

Stack Overflow用户
提问于 2018-04-16 11:20:17
回答 1查看 251关注 0票数 0

我想更新我的视图(输入表单)以将产品添加到数据库中。对于单个产品,我可以通过将其添加到数组中来添加它,但现在我想添加多个产品,单击“添加更多的产品”按钮,就可以在现有表单下面生成类似的视图(表单),这可以多次进行(在运行时确定)。现在我有两个问题: 1。如何更新我的视图与每一个(添加更多的产品)按钮点击。它是通过维护某些计数来完成的吗? 2.如何将每个窗体的多个产品值添加到对象数组中。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$scope.onClick = function () {
                        $scope.productData =
                                {
                                    name: $scope.name,
                                    description: $scope.description,
                                    price: $scope.price,
                                    image: $scope.image,
                                    tags: $scope.tags,
                                    partner_id: $scope.partner_id,

                                };
                                }

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-16 13:25:18

示例代码

有很多方法可以做到这一点。我制作了这个示例柱塞,它显示了一个简单的选项:切换一个表单div,在表单中添加数据,然后将结果的form对象推到主产品数组中。

编辑:--我重构了我的plunk和代码片段,以使用Javascript类和构造函数。如下所示,克隆主对象是执行此任务的另一种方法。

https://embed.plnkr.co/IsNifSaF8jE7oOog29dK/

(请参阅答案底部的完整片段。)

解释

在代码中,对所有对象属性都使用$scope。实际上,您应该创建一个顶级范围数组,它是从服务器检索产品的结果。实际上,我将创建一个与数据库中需要的产品对象相匹配的JavaScript构造函数/类(为了简洁起见,我刚刚创建了一个“主”对象和一个克隆的"newProduct“对象来编辑):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// Sample Product Object
$scope.newProduct= {
  name: "",
  description: "",
  price: 0.00,
  image: "",
  tags: [],
  partner_id: 0
};

可以使用$scope.newProduct将您的ng-model对象绑定到表单。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!-- ==== Simplified Form ==== -->
<form class="form" ng-submit="submitNewProduct()">
  <div class="form-group">
    <label>Product Name: </label>
    <input class="form-control" type="text" ng-model="newProduct.name" >
   </div>
   <input type="submit" class="btn btn-info" />
</form>

现在,当您提交新产品数据时,您可以在控制器中操作它(通过$scope.submitNewProduct()函数)。一旦成功地将对象插入到数据库中,并且完成了对数据的操作,就可以将最终确定的“新产品”对象推到products数组中。当您将新产品添加到数组中时,AngularJs将为您更新视图(通过ng模型绑定对象正在监视更改):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// If server update is successful, add new product to products array
$scope.products.push($scope.newProduct);

如果您没有使用构造函数,请注意,我将$scope.newProduct对象重置为默认值,这样当您再次打开新产品表单时,它不会进行任何新的更改。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// Reset placeholder product
$scope.newProduct = $scope.masterProduct;

有用资源

片段

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(function() {
  "use strict";

  var app = angular.module("myApp", []);

  app.controller("myController", myController);

  myController.$inject = ["$scope", "$timeout", "$filter"];

  function myController($scope, $timeout, $filter) {
    $scope.loading = false;
    
     class Product {
      constructor(_name, _description, _price) {
        this.id = this.getNewId();
        this.name = _name;
        this.description = _description;
        this.price = _price;
        this.image = "https://www.thesweetexplosion.co.uk/wp-content/uploads/2013/06/product-placeholder.jpg";
        this.tags = [];
        this.partner_id = 0;
      }
      
      getNewId() {
        var latestId = $scope.products[$scope.products.length - 1].id
        return latestId + 1;
      }
    }

    // Pretending we received these products received from the database...
    $scope.products = [{
      id: 0,
      name: "product_1",
      description: "product_1 description",
      price: 52.23,
      image: "https://raspberrypi.dk/wp-content/uploads/2014/07/raspberry-pi-model-b-plus1.png",
      tags: [],
      partner_id: 345214967
    }, {
      id: 1,
      name: "product_2",
      description: "product_2 description",
      price: 46.23,
      image: "https://modtronix.com.au/wp-content/uploads/enc-rpi3-official_bottom_ll-100x100.jpg",
      tags: [],
      partner_id: 514852924
    }];
    
    // Add new Products by using this base object
    $scope.placeholderProduct = {
      id: 0,
      name: "",
      description: "",
      price: 0.00,
      image: "https://www.thesweetexplosion.co.uk/wp-content/uploads/2013/06/product-placeholder.jpg",
      tags: [],
      partner_id: 0
    };
    
    $scope.createNewProduct = function(){
      $scope.newProduct = new Product("", "", 0);
    }

    $scope.submitNewProduct = function() {
      // DO SERVER UPDATING HERE
      
      // Show loading
      $scope.updating = true;

      // Simulate server update
      $timeout(function() {

        // If server update is successful, add new product to products array
        $scope.products.push($scope.newProduct);

        // Reset submit button
        $scope.updating = false;

        // Reset placeholder product
        $scope.newProduct = {};

        // Hide products form
        $scope.addProductForm = false;

      }, 1000);

    }

  }

})();
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.productImg {
  width: 50px;
  height: 50px;
}

.prodForm {
  margin-top: 15px;
  margin-bottom: 15px;
  ;
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html>

  <head>
    <link rel="stylesheet" href="style.css" />
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" />
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.1/angular.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
    <script src="https://use.fontawesome.com/releases/v5.0.9/js/all.js"></script>
    <script src="script.js"></script>
  </head>

  <body ng-app="myApp" ng-controller="myController">
    <div class="container">
      <div class="row">
        <div class="col-xs-12">
          <div class="jumbotron text-center">
            <h3>AngularJS (1.3.1) - Instantiating Products with ES6 Class Constructor</h3>
          </div>
        </div>
      </div>
      
      <!-- New Product Form - Toggled with addProductForm -->
      <div class="col-xs-12">
        <button type="button" class="btn btn-sm btn-success" ng-click="createNewProduct(); addProductForm = !addProductForm" ng-show="!addProductForm">
           <span class="glyphicon-plus">  Add New Product</span>
          </button>
          <button type="button" class="btn btn-sm btn-danger" ng-click="addProductForm = !addProductForm" ng-show="addProductForm">
            <span>Clear</span>
          </button>
        </div>
       <div class="col-xs-12 well prodForm" ng-show="addProductForm">
        <form class="form" ng-submit="submitNewProduct()">
          <div class="form-group">
            <label>Product Name: </label>
            <input class="form-control" type="text" ng-model="newProduct.name" >
          </div>
          <div class="form-group">
            <label>Description: </label>
            <input class="form-control" type="text" ng-model="newProduct.description" />
          </div>
          <div class="form-group">
            <label>Price: </label>
            <input class="form-control" type="number" min="0.01" step="0.01" ng-model="newProduct.price" format="currency" />
          </div>
          <div class="form-group">
            <label>Partner Id: </label>
            <input class="form-control" type="number" ng-model="newProduct.partner_id" />
          </div>
          <input type="submit" class="btn btn-info" ng-show="!updating" />
          <button type="button" class="btn btn-info" ng-show="updating"><i class="fa fa-spinner fa-spin"></i>  Updating...</button>
        </form>
      </div>
      
       <!-- Primary Products Table -->
      <div class="col-xs-12">
        <table class="table table-striped">
          <thead>
            <tr>
              <th>Name</th>
              <th>Description</th>
              <th>Price</th>
              <th>Image</th>
              <th>Tags</th>
              <th>Partner Id</th>
            </tr>
          </thead>
          <tbody>
            <tr ng-repeat="product in products track by $index">
              <td>{{ product.name }}</td>
              <td>{{ product.description }}</td>
              <td>{{ product.price | currency }}</td>
              <td>
                <img class="productImg" ng-src="{{ product.image }}" alt="{{ product.name }} img" />
              </td>
              <td>{{ product.tags }}</td>
              <td>{{ product.partner_id }}</td>
            </tr>
          </tbody>
        </table>
      </div>
    </div>
  </body>

</html>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49864761

复制
相关文章
python中带*号的参数,一个星号,两个星号
2.带两个星号(*)参数的函数传入的参数则存储为一个字典(dict),并且再调用是采取a=1,b=2,c=3的形式
狼啸风云
2021/04/01
3.6K0
python 函数参数的传递(参数带星号的说明)
python中函数参数的传递是通过赋值来传递的。函数参数的使用又有俩个方面值得注意:1.函数参数是如何定义的 2.在调用函数的过程中参数是如何被解析 先看第一个问题,在python中函数参数的定义主要有四种方式: 1.F(arg1,arg2,...) 这 是最常见的定义方式,一个函数可以定义任意个参数,每个参数间用逗号分割,用这种方式定义的函数在调用的的时候也必须在函数名后的小括号里提供个数相等的 值(实际参数),而且顺序必须相同,也就是说在这种调用方式中,形参和实参的个数必须一致,而且必须一一对应,也就
hbbliyong
2018/03/05
3.7K0
bgd、sgd、mini-batch gradient descent、带mini-batch的sgd
SGD是最速梯度下降法的变种。使用最速梯度下降法,将进行N次迭代,直到目标函数收敛,或者到达某个既定的收敛界限。每次迭代都将对m个样本进行计算,计算量大。为了简便计算,SGD每次迭代仅对一个样本计算梯度,直到收敛。伪代码如下(以下仅为一个loop,实际上可以有多个这样的loop,直到收敛):
狼啸风云
2021/08/05
9130
星号的作用
星号( * )已经在此前的学习中出现过,它可以作为乘法和乘方的运算符,也可以表示序列中元素的重复。对于函数而言,它的作用则体现在收集参数上。
老齐
2021/10/21
5.1K0
python的星号(*)和双星号(**)用法
在Python中,星号除了用于乘法数值运算和幂运算外,还有一种特殊的用法"在变量前添加单个星号或两个星号",实现多参数的传入或变量的拆解,本文将详细介绍"星号参数"的用法。
matinal
2023/10/13
4210
trick(三)、函数参数前面单星号(*)和双星号(**)的区别
在python的函数中经常能看到输入的参数前面有一个或者两个星号:例如 def foo(param1, *param2): def bar(param1, **param2): 这两种用法其实都是用来将任意个数的参数导入到python函数中。 单星号(*):*agrs 将所以参数以元组(tuple)的形式导入: 例如: >>> def foo(param1, *param2): print param1 print param2 >>> foo(1,2,3,4,5) 1 (
狼啸风云
2022/11/21
8790
星号转移
本关任务:规定输入的字符串中只包含字母和*号。给定程序的功能是将字符串中的前导*号全部移到字符串的尾部。
小Bob来啦
2020/12/16
2.9K0
星号转移
Python中带else子句的for循环执行过程
这几天在厦门讲课,每天6小时,没有太多时间写新代码,宾馆不知道咋想的也不提供WiFi,只好用手机做个热点临时分享一点基础知识,300M的包月流量伤不起,热点瞬间就把仅剩的40M流量用完了,赶紧发完关闭热点。 在Python中,有while和for两种循环,并且都可以带有else子句。其中while循环常用于无法提前确定循环次数的场合,当然也可以用于循环可以提前确定的场合;for循环常用于可以提前确定循环次数的场合,尤其适合用来迭代或遍历可迭代对象中的元素,这也是for循环的本质。 对于带有else子句的循环
Python小屋屋主
2018/04/16
1.6K0
Python中带else子句的for循环执行过程
Java打印菱形星号
先只打印#号, 然后打印*号,找规 双嵌套for循环, 外循环负责控制行数,控制行,控制换行 内循环负责控制列数,控制列,控制列打印的符号 找规律。。用i来表示j的最大值。
昨天50还没用完
2018/06/29
2.9K0
2315. 统计星号
我的思路是遍历字符串,记录|的个数,当其为奇数时,发现*也不计数,如果其为偶数,则计*的个数。比如"l|*e*et|c**o|*de|",设置一个变量flag,遇到第一个|,计数为1,后面遇到*e*et都不计数,然后遇到第二个|,将flag设置为2,然后后面的c**o计数为2,然后遇到一个|,flag设置为3,*de不会计数,然后遇到一个|,flag计数为4。再遇到下一个|之前都计数,但是这里后面没有了,便不计数。
Regan Yue
2023/07/10
1470
SAP QM Batch to Batch的转移过账事务中的Vendor Batch
下午,笔者在微信上收到之前的P项目客户方的合作伙伴邱老师的message,说是问我一个问题。
SAP虾客
2021/03/01
7350
SAP QM Batch to Batch的转移过账事务中的Vendor Batch
深度学习中的batch(batch size,full batch,mini batch, online learning)、iterations与epoch
我们已知在梯度下降中需要对所有样本进行处理过后然后走一步,那么如果我们的样本规模的特别大的话效率就会比较低。假如有500万,甚至5000万个样本(在我们的业务场景中,一般有几千万行,有些大数据有10亿行)的话走一轮迭代就会非常的耗时。这个时候的梯度下降使用了全部的样本数据,所以叫做full batch。
全栈程序员站长
2022/07/31
2.6K0
深度学习中的batch(batch size,full batch,mini batch, online learning)、iterations与epoch
如何隐藏Code39码的星号
CODE 39是 Intermec公司在1975年研制成功的。包括数字、字母和一些符号在内,条形码共包括43个字符。由于可以处理字母,CODE 39在工业领域必不可少,用于汽车、电子等工厂自动化行业。Code 39码支持26个英文大写字母(A-Z),十个数字(0-9),以及符号(-、.、_(空)、*、$、/、+、%)。可以对任意长度的数据进行编码,Code 39码用于物流跟踪、生产线流程等方面,是比较常用的条形码类型之一。39码的起始码和终止码为固定的星号“*”,即39码前后各有一个星号“*”来标识条形码的开始和结束。因为有些用户制作条码时,不需要显示头尾的星号,所以下面我们就介绍如何隐藏这个起始码和终止码。
神奇像素科技
2022/02/14
1.4K0
如何隐藏Code39码的星号
查看星号密码工具
可以查看星号密码的工具: 效果还是很强大的,欢迎使用! 星号密码查看
Youngxj
2018/06/07
4.3K0
Batch Normalization的诅咒
Batch Normalization确实是深度学习领域的重大突破之一,也是近年来研究人员讨论的热点之一。Batch Normalization是一种被广泛采用的技术,使训练更加快速和稳定,已成为最有影响力的方法之一。然而,尽管它具有多种功能,但仍有一些地方阻碍了该方法的发展,正如我们将在本文中讨论的那样,这表明做归一化的方法仍有改进的余地。
石晓文
2020/11/09
8780
Batch Normalization的诅咒
Python字典前双星号(**)的作用
Python中,单星号 * 和双星号 ** 除了作为“乘”和“乘方”的数值运算符外,还在列表、元组、字典的操作中有看到,下面对其进行解释:
狼啸风云
2020/07/01
2.2K0
点击加载更多

相似问题

如何使用PLI例程获取verilog向量端口的尺寸?

13

如何在Modelsim中重新启动Verilog模拟

33

如何使用VPI PLI - verilog VCS查找是否连接了两个Verilog模块

12

Verilog连续模拟

10

如何使用Verilog宏模拟$display?

30
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文