我正在使用Material Steppers开发小型AngularJS应用程序。
我必须从页面的两个部分中选择项目,并且仅当两个部分中的项目属于ID为({ {1}})1.
true
我也有这项服务:
categoryID
问题:
假设我处于两个if语句都返回class Controller {
constructor($mdStepper, validationService) {
this.$mdStepper = $mdStepper;
this.isTriggerA = true;
this.isTriggerB = true;
this.clickedStepNumber = 0;
static get $inject() {
return [
'$mdStepper',
'validationService'
];
}
getCurrentStep() {
this.steppers = this.$mdStepper('stepper');
const steps = this.steppers.steps;
steps.forEach((el, index) => {
let step = this.steppers.steps[index];
if (step.isClicked()) {
this.clickedStepNumber = step.stepNumber;
}
});
}
checkCategory() {
this.getCurrentStep();
if (this.filter.provider) {
let categoryID = parseInt(this.filter.category.id, 10);
console.log('Cid: ' + categoryID);
if (categoryID !== 1) {
this.isTestPassed = false;
} else {
if (parseInt(this.clickedStepNumber, 10) === 1) {
this.isTriggerA = true;
console.log('Step: ' + this.clickedStepNumber);
console.log("A1: " + this.isTriggerA);
console.log("B1: " + this.isTriggerB);
}
if (parseInt(this.clickedStepNumber, 10) === 2) {
this.isTriggerB = true;
console.log('Step: ' + this.clickedStepNumber);
console.log("A2: " + this.isTriggerA);
console.log("B2: " + this.isTriggerB);
}
if (this.isTriggerA === true && this.isTriggerB === true) {
this.isTestPassed = true;
} else {
this.isTestPassed = false;
}
}
}
}
}
的情况。从这一点开始,我在第一个块(步骤)中进行了更改,以使其返回export default class validationService {
constructor() {
this.isTestPassed = true;
}
}
。
第二个块中的if不能“记住”第一个块中的if返回的值。它返回到构造函数顶部的值。
这意味着下面的代码块
false
早早返回true-在 this.isTriggerA 和 this.isTriggerB 都成立之前。
我需要脚本始终意识到两个块的“状态” 。
注意:我无法在代码开始时将true
和if (this.isTriggerA === true && this.isTriggerB === true) {
this.isTestPassed = true;
} else {
this.isTestPassed = false;
}
设置为false,如果也未选择任何内容,则需要返回true。
我该如何解决?
答案 0 :(得分:0)
在应用程序顶部,您声明:
this.isTriggerA = true;
this.isTriggerB = true;
这意味着两者的默认值均为true,因此如果您的if条件都为
if (parseInt(this.clickedStepNumber, 10) === 1)
和
if (parseInt(this.clickedStepNumber, 10) === 2)
为假,最后一条语句this.isTriggerA === true && this.isTriggerB === true
将始终为真。
要默认情况下不执行此操作,请在代码开头将isTriggerA
和isTriggerB
设置为false
由于您的情况是:
我必须从页面的两个部分中选择项目,并且仅当两个部分中的项目都属于ID为(categoryID)1的类别时才返回true。
默认情况下将这两个值保持为真是没有意义的