Javascript 来自SerServer的angularjs响应传递所有if语句
我正在AngularJs和Spring中开发一些应用程序,我遇到了一个问题 来自后端的响应:Javascript 来自SerServer的angularjs响应传递所有if语句,javascript,angularjs,Javascript,Angularjs,我正在AngularJs和Spring中开发一些应用程序,我遇到了一个问题 来自后端的响应: ["PPT", "PPU"] 以及角度控制器中的功能: function setCompanyCodes (companyCodes) { var tmpArray = []; var tmpObject = { value: "", name: "" }; _.each(companyCodes, function (v
["PPT", "PPU"]
以及角度控制器中的功能:
function setCompanyCodes (companyCodes) {
var tmpArray = [];
var tmpObject = {
value: "",
name: ""
};
_.each(companyCodes, function (val) {
tmpObject.value = val;
if (val === "PPT") {
tmpObject.name = "Post Patron Team";
} else if (val === "PPU") {
tmpObject.name = "Post Patron University";
}
tmpArray.push(tmpObject);
}
);
$scope.companyCode = tmpArray;
}
问题是val传递了两个if语句,因此它以两个相同的公司名称结尾。我尝试了双等号-相同的结果。您经常使用和推送相同的对象,但您必须记住数组/对象是通过引用传递的,而不是通过值传递的,例如字符串 例如:
var objArr = [];
var obj = {value: "",name: ""};
obj.value = "PPT";
obj.name = "Post Patron Team";
objArr.push(obj); //objArr: [{value: "PPT", name:"Post Patron Team"}]
obj.value = "PPU"; //objArr: [{value: "PPU", name:"Post Patron Team"}]
你怎么解决这个问题
您可以推送obj的副本,这会打断对原始对象的引用
tmpArray.push(angular.copy(tmpObject));
您能显示console.logval的输出是什么吗?也许您必须将从后端接收到的数组解码回JSON来处理它。似乎数组中的元素与这两个值都匹配。检查您的companyCodes数组中有什么。控制台的输出,logval-PPT,在第二次运行PPU时,您是否可以尝试使用==而不是==?@SadokMtir companyCodes是后端错误的响应数组,它们的解决方案只会帮助加强您的知识。