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