首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用Angularjs计算总价格和数量

用Angularjs计算总价格和数量
EN

Stack Overflow用户
提问于 2016-08-21 14:14:55
回答 1查看 2.4K关注 0票数 7

使用ui.bootstrap.typeahead,我从json列表中选择一个产品(输入'P')。我的目标是自动设定总价。但是我无法得到所选择的产品的价格来显示(value="{{selected.price}}"),所以它可以计算总数。不知道我做错了什么。

柱塞:http://plnkr.co/edit/F9jPt7IZgsWyON2vEmic

代码语言:javascript
运行
AI代码解释
复制
<html>
<head>
  <link rel="stylesheet" href="style.css">
  <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.4.4/angular.js"></script>
  <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.4.4/angular-animate.min.js"></script>
  <script src="//cdnjs.cloudflare.com/ajax/libs/angular-ui-bootstrap/0.13.3/ui-bootstrap-tpls.min.js"></script>
  <link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet">

  <script src="script.js"></script>

  <script>
    angular.module("app", ["ui.bootstrap.productautocomplete"]);
  </script>
</head>

<body>
  <div class="container" ng-app="app">

  <div ng-controller="ProductAutocompleteCtrl">

    <div class="col-sm-4">
      <input id="product_info" name="product_info" ng-change="displayPrice()" type="text" placeholder="Autocomplete - Type 'P' to find product's name" ng-model="selected" typeahead="product as product.name for product in products | filter:$viewValue | limitTo:8" class="form-control"
      autocomplete="off">
    </div>

    <div class="col-sm-2">
      <input id="price" name="price"  ng-model="prc"  ng-validate="number" placeholder="Autocomplete - Price" type="text" class="form-control" value="{{selected.price}}">
    </div>

    <div class="col-sm-1">
      <input id="quantity" name="quantity" ng-model="qty" ng-change="changePrice()" ng-validate="integer" placeholder="Quantity" type="text" class="form-control">
    </div>

    <div class="col-sm-2">
      <input id="total_prod1" name="total_prod1" ng-model="totalprod" ng-validate="number" placeholder="Total price" type="text" class="form-control" value="">
    </div>

  </div> <!-- ng-controller -->
 </div>
</body>
</html>

products.json

代码语言:javascript
运行
AI代码解释
复制
{"products":[
{"productversion":1,"name":"product1","price":"10.00"},
{"productversion":2,"name":"product2","price":"20.00"}
]}      

script.js

代码语言:javascript
运行
AI代码解释
复制
angular.module('ui.bootstrap.productautocomplete', ['ngAnimate', 'ui.bootstrap']);
angular.module('ui.bootstrap.productautocomplete').controller('ProductAutocompleteCtrl', ['$scope', '$http', '$location', function($scope, $http, $location) {

  $scope.selected = undefined;

  var urlapiproducts = "products.json" ;
    //console.log(urlapiproducts);

    $http.get(urlapiproducts).success(function(data, status, headers, config) {
        $scope.products = data.products;  


    // console.log(data);
    }).error(function(data, status, headers, config) {
        console.log("No data found..");
  });


    $scope.displayPrice = function(){
        var qty = 0;        
        var prc = 0;        

        qty = 1;
        prc = $scope.prc;    

        $scope.qty = qty;        

        $scope.totalprod = qty * prc;  
    }  

    $scope.changePrice = function(){
        var qty = 0;
        var prc = 0;

        qty = $scope.qty;       
        prc = $scope.prc;

        if(qty > 0 && prc > 0)
        {
            $scope.totalprod = qty * prc;
        }          
    }  

}]);        

更新#1

ng-模型由prc改为selected.price

代码语言:javascript
运行
AI代码解释
复制
<input id="price" name="price" ng-model="selected.price"  ng-validate="number" type="text" value="{{selected.price}}">

这适当地显示了价格和初始数量。感谢@AbdelrhmanMohamed

现在的问题是,我不知道如何使用selected.price值来计算总价(价格*数量)。选择产品时,会显示价格,但selected.price仍未在displayPrice()中定义

更新#2

问题:ng-当ng-模型改变时,不触发变化

$scope.$watch解决

代码语言:javascript
运行
AI代码解释
复制
$scope.$watch('selected.price', function() {
  $scope.displayPrice();
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-03 09:49:01

我设法删除了中的$watch()函数,您不需要它,因为所有绑定都正常工作。

首先,将ng更改为按选择的提前输入。

由于ng更改是在每个按键事件上执行的,所以在从列表中选择一个实际值之前,我们不需要它。您可以使用ng-change代替typeahead-on-select,只要选择了一个值,就会立即执行它。

您的提前输入指令:

代码语言:javascript
运行
AI代码解释
复制
 <input id="product_info" name="product_info" typeahead-on-select="displayPrice(product)" type="text" 
                      placeholder="Autocomplete - Type 'P' to find product's name" ng-model="product"
                      typeahead="product as product.name for product in products | filter:$viewValue | limitTo:8"
                      class="form-control" autocomplete="off">

除此之外,代码上并没有什么重大的变化,只有一些小的变化:看看下面的示例:http://plnkr.co/edit/R3LON9?p=preview

希望这能帮上忙祝你好运。

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

https://stackoverflow.com/questions/39069321

复制
相关文章
传统 for 循环的函数式替代方案
在 Java 语言的第 1 个版本中就开始引入了传统的 for 循环,它的更简单的变体 for-each 是在 Java 5 中引入的。大部分开发人员更喜欢使用 for-each 执行日常迭代,但对于迭代一个范围或跳过范围中的值等操作,他们仍会使用 for。
IT小马哥
2020/03/18
3K0
Java 中for循环和foreach循环哪个更快?
在Java编程中,循环结构是程序员常用的控制流程,而for循环和foreach循环是其中比较常见的两种形式。关于它们哪一个更快的讨论一直存在。本文旨在探究Java中的for循环和foreach循环的性能差异,并帮助读者更好地选择适合自身需求的循环方式。通过详细比较它们的遍历效率、数据结构适用性和编译器优化等因素,我们将为大家揭示它们的差异和适用场景,以便您能够做出更明智的编程决策。
葡萄城控件
2023/10/16
7500
Java 中for循环和foreach循环哪个更快?
onpropertychange替代方案[通俗易懂]
大家好,又见面了,我是你们的朋友全栈君。 onpropertychange替代方案
全栈程序员站长
2022/08/01
1.4K0
Base:Acid的替代方案
作者:DAN PRITCHETT 译者:java达人 来源:https://queue.acm.org/detail.cfm?id=1394128(点击阅读原文前往) 在数据库分区中,以一致性换取可
java达人
2018/03/26
2.4K0
Base:Acid的替代方案
Web 框架的替代方案
在本系列第二部分中,Noam 提出了一些模式,说明如何直接用 Web 平台作为框架提供的一些解决方案的替代方案。
深度学习与Python
2022/04/19
2.7K0
Hugo .GitInfo 的替代方案
今天有人问我博客页脚 footer 里的 git hash 是怎么显示的,就是页面底部里的 69d6ffe 这一串数字。
eallion
2022/12/20
1.9K0
Hugo .GitInfo 的替代方案
探讨if...else的替代方案
假设我们要做一个计算器,实现加减乘除的需求。使用if...else...语句实现代码如下:
互联网金融打杂
2022/08/01
2.3K0
探讨if...else的替代方案
Flutter 中FlatButton的替代方案
最新版本的Flutter已将FlatButton标记为过时,我们可以使用 TextButton 或 ElevatedButton 来进行替代,FlatButton 与替代组件的参数会有差异。
xiangzhihong
2023/07/09
7710
企业用途的 V** 替代方案
虚拟专用网络 (VPN) 是最常用的远程网络连接解决方案之一。但是,它有许多限制,会对网络性能和安全性产生负面影响。使用更专业的远程解决方案替代 VPN ,可以提高安全性,同时还可以提高远程访问的质量和远程工作人员的工作效率。
Loki
2023/01/10
2.3K0
企业用途的 V** 替代方案
循环结构 if语句我替代语法
通过这两者的比较,我得出了一个结论,就是while是符合条件在执行语句,do while是先执行在判断是否符合条件 这两个都一样,但是while就像我想结婚了,所以我去求家长父母的同意是吧,他们同意了我和李文的婚事我们才能结婚,但是do while就有点不同了,他是私奔了呀,先结婚然后在慢慢跟各方家长说,家长同意了就行了一样的啦 问题:为什么都是执行10次,因为do while那里是$i++到10了啊就不符合条件了啊,所以才10次啊,像是我明天要给你十块钱,我不管你今天你花钱欠账明天再给商家也好,还是明天在花也好,就十块哈,一分也没有,就十块.do while就像是先花了,while就像是给再花哈哈哈哈,
贵哥的编程之路
2020/10/28
3640
循环结构 if语句我替代语法
break-跳出内循环
i = 1 j = 1 while i <= 10: print('第%d个碗' % i) while j <= 10: if j == 5: break else: print('这是内循环的第%d个碗' % j) j += 1 i += 1
汪凡
2018/05/29
8130
加油站智能视频监控系统方案
加油站智能视频监控系统方案利用加油站现场的已经装好的监控摄像头对加油站进行打电话识别、抽烟识别、明火烟雾识别、车辆识别。除此之外,加油站智能视频监控系统方案还可以对汽油静电释放检测、灭火器摆放识别、玩手机识别。有益于加油站安全隐患的管理把控,从根源上降低与分析安全隐患的主要原因,提升管控效率。
燧机科技
2022/10/03
6350
加油站智能视频监控系统方案
内拐角的铣削方案
利用编程半径 (圆弧铣) 来减少接触弧及径向切宽以减少振动趋势,从而在铣削内拐角时实现更大的切深和更高的进给率。
lrglu
2022/03/30
9100
内拐角的铣削方案
Electron中remote模块的替代方案
在Electron12时候被废弃,使用必须配置enableRemoteModule
码客说
2023/09/14
2.1K0
替代Websocket的解决方案:GoEasy
GoEasy这个库的适用场景:同Websocket的场景 在后台使用例如Java进行逻辑处理后将变量的值传入前台,前台不用发起请求即可接收后台发布的数据, 整个流程与Redis的Pub和Sub过程类似 整个交互类似Socket的长连接,前台首次调用不需要请求后台。 非常适合监控后台参数等场景;
ZONGLYN
2019/08/08
5.6K0
Java 高效编程·函数式替代 for 循环
虽然使用 range 没有显著减少代码量,但降低了它的复杂性,这么做的两个重要原因:
数媒派
2022/12/01
8000
Java 函数引用 替代方案
通过接口和内部类 举个例子吧 比如new一个线程 c#里是这样 Thread tr = new Thread(new ThreadStart(func)); 其中func是函数名 那么java里可以这样 Thread tr = new Thread() { public void run() {func();} }; 也没有多写多少代码
ApacheCN_飞龙
2019/02/15
8480
5 个 Docker 替代方案
提高容器安全性、Docker 未来的不确定性、技术战略变化和预算问题都可能促使企业寻找 Docker 的替代品作为其容器标准。
我的小碗汤
2023/03/19
2.5K0
5 个 Docker 替代方案
react useCallback完美替代方案
react函数组件为了保持引用不变,很多时候需要借助useCallback,但是useCallback强依赖于外部变量,必须传个依赖变量,万一漏传了很容易出问题。比较函数复杂时较麻烦,使用这个即可完美解决,引用不变,调用肯定是最新的,并且不需依赖
ACK
2021/01/21
1.6K0
点击加载更多

相似问题

我可以在Switch语句上使用对象吗?

354

可以在事件处理程序上使用延迟对象链吗?

11

可以使用对象而不是Switch语句吗?

31

是否可以在switch语句中使用switch语句?

22

可以在switch语句中使用类吗?

41
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档