Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
这个简单的AngularJS计算器有什么错误?_Angularjs - Fatal编程技术网

这个简单的AngularJS计算器有什么错误?

这个简单的AngularJS计算器有什么错误?,angularjs,Angularjs,我是AngularJS新手。我正在尝试制作一个非常简单的计算器,在Angular 1.5中添加两个值。calc.result的值不更新 index.html js/controllers/calc.js 将结果作为计算输入1和输入2的函数。另外,按用户编辑结果部分也没有意义,所以不将结果作为输入字段,而只显示字段 加价 首先,您不是在单击事件上调用add函数 然后初始化每个函数调用的值 您需要使用单独的方法进行添加 只需更改一行: <span>=</span> <i

我是AngularJS新手。我正在尝试制作一个非常简单的计算器,在Angular 1.5中添加两个值。calc.result的值不更新

index.html

js/controllers/calc.js

将结果作为计算输入1和输入2的函数。另外,按用户编辑结果部分也没有意义,所以不将结果作为输入字段,而只显示字段

加价


首先,您不是在单击事件上调用add函数

然后初始化每个函数调用的值

您需要使用单独的方法进行添加

只需更改一行:

<span>=</span>
<input type="number" ng-value="calc.input1*1 + calc.input2*1">

您需要定义一个计算属性来访问依赖于控制器/作用域上其他属性的值

为了实现它,javascript使您能够在对象上拥有一个getter,您可以使用它来计算值,但仍然可以将其作为属性(在您的示例中是其结果)进行访问

您可以阅读有关MDN的更多信息

这是你能做的

作用{ 角度。模块‘计算器’,[]; }; 作用{ 有棱角的 .模块“计算器” .控制器“calcCtrl”,计算器控制; 函数计算器控制{ 此参数为0.input1=0; 此参数为0.input2=0; Object.DefineProperty此“结果”{ get:函数{ 返回this.input1+this.input2; } }; } }; + =
在'this.result'变量上使用timeout放置一个手表,以获取第三个输入标记中的最新值。通过发送值并从函数返回结果,调用caluclate函数,并在输入标记中显示它。谢谢,这很有效,但我想用一个控制器实现它。工作起来很有魅力!我投了反对票,因为你的解决方案是错误的。既然已经解决了,我收回了否决票。谢谢。@匿名解决方案不起作用,但并不意味着你应该否决它。。如果答案背后的想法不正确/可悲,那么只有否决票。。。这就是人们做DownVote的方式如果答案背后的想法不正确,你不能指望新手理解。在尝试帮助之前,如果不先测试代码,就不应该提供错误的解决方案。你想让你的孩子学到一些错误的东西,这样你就可以快速回答并获得一些分数吗?一个错误的代码,imo,值得投下一票。@匿名我同意你的说法,但在这种情况下,似乎不是投下一票,人们来这里是为了了解他们正在做的事情的方向,有时回答er只是为了给解决方案提供更光明的想法。当我意识到你真诚地根据我的评论重新编辑了这个问题时,我收回了反对票。不同的观点,我的朋友。无论如何,谢谢你的帮助。
(function() {
    angular.module('Calculator', []);
})();
(function() {
    angular
    .module('Calculator')
    .controller('calcCtrl', CalculatorControl);

    function CalculatorControl()
    {
        this.input1 = 0;
        this.input2 = 0;

        this.result = this.input1 + this.input2;
    }
})();
<div class="container" ng-controller="calcCtrl as calc">
    <input type="number" ng-model="calc.input1">
     <span>+</span>
    <input type="number" ng-model="calc.input2">
     <span>=</span>
    <span ng-bind="calc.result()"></span>
</div>
function CalculatorControl() {
    var self = this;
    self.input1 = 0;
    self.input2 = 0;

    self.result = function(){ 
      var input1 = !isNaN(self.input1) ? self.input1: 0,
          input2 = !isNaN(self.input2) ? self.input2: 0;
      return input1 + input2;
    }
}
<span>=</span>
<input type="number" ng-value="calc.input1*1 + calc.input2*1">