我有两个按钮,一个用于递增,另一个用于递减我的范围。
我想:闵。 number = 0和Max。数= 50。
我试过这个:
myApp.controller('StepCtrl', function($scope, $timeout, $state, $stateParams) {
$scope.event = {
priceid: 0,
}
if ($scope.event.priceid === 0) {
console.log("This is 0")
$scope.nextPrice = function() {
$scope.event.priceid += 5;
}
$scope.previousPrice = function() {
$scope.event.priceid = 0;
}
} else if ($scope.event.priceid === 50) {
console.log("This is 50")
$scope.nextPrice = function() {
$scope.event.priceid = 50;
}
$scope.previousPrice = function() {
$scope.event.priceid -= 5;
}
} else {
console.log("This is into 0 and 50")
$scope.nextPrice = function() {
$scope.event.priceid += 5;
}
$scope.previousPrice = function() {
$scope.event.priceid -= 5;
}
}
})
但是,我可以拥有像-40或95这样的价值,我认为我的"如果"和" Else"被忽略了。
有你的想法吗?
感谢您的回复。 :)
答案 0 :(得分:1)
我必须看到你的完整控制器才能全面了解情况。但我相信问题是你的表达式在启动时而不是实时评估一次。
我的解决方案是用这个替换你的if-else语句。
$scope.event = {
priceid: 0,
}
$scope.nextPrice = function() {
if($scope.event.priceid < 50)
$scope.event.priceid += 5;
}
$scope.previousPrice = function() {
if($scope.event.priceid > 0)
$scope.event.priceid -= 5;
}
这样,每次调用$ scope.previousPrice()或$ scope.nextPrice()而不是那些刚刚在运行时分配的方法时,都会评估您的条件。
答案 1 :(得分:0)
我建议您探索此解决方案:
var event = {
priceid: 0,
priceIterator: 45,
nextPrice: function() {
if ((this.priceid + this.priceIterator) <= 50) {
this.priceid += this.priceIterator;
}
},
previousPrice: function() {
if ((this.priceid - this.priceIterator) > 0) {
this.priceid -= this.priceIterator;
}
}
};
event.nextPrice(); // 45
event.nextPrice(); // still 45
event.previousPrice(); //0
event.previousPrice(); //still 0
alert(event.priceid);
此解决方案使用对象和上下文(this)来处理价格。同时避免在条件内制作具有相同名称的多个函数,这是非常糟糕的做法。
为了让它适用于你的角度应用程序,只需要改变,而不是变量,使用范围:
$scope.event = {
priceid: 0,
priceIterator: 45,
nextPrice: function() {
if ((this.priceid + this.priceIterator) <= 50) {
this.priceid += this.priceIterator;
}
},
previousPrice: function() {
if ((this.priceid - this.priceIterator) > 0) {
this.priceid -= this.priceIterator;
}
}
};
$scope.event.nextPrice();
$scope.event.previousPrice();
$scope.event.previousPrice();
alert($scope.event.priceid);