这是我的模特:
initialize: function(options) {
var self= this;
if(_.isUndefined(options)===false){
self.model= new SendAlertsModel();
self.loggedInUser = app.user;
self.model.set("userList",options.previousTabData.get("userList"));
self.model.set("alertUserList",options.previousTabData.get("userList"));
self.model.get("alertUserList").push(self.loggedInUser);
}
},
内幕:
iif(not isnull(ltrim(rtrim(a))) or not is_spaces(ltrim(rtrim(a))) or ltrim(rtrim(a))!='' or length(ltrim(rtrim(a)))!=0 or ltrim(rtrim(a))!=null or ltrim(rtrim(a))!='NULL'and not isnull(ltrim(rtrim(b))) or not is_spaces(ltrim(rtrim(b))) or ltrim(rtrim(b))!='' or length(ltrim(rtrim(b)))!=0 or ltrim(rtrim(b))!=null or ltrim(rtrim(b))!='NULL',null,ltrim(rtrim(a))).
我在这里遇到的问题是当我将loggedInUser推送到alertUserList数组时,它会自动将相同的loggedInUser推送到userList数组。
请就此提出建议。
由于
答案 0 :(得分:2)
//create new alerts model
model = new SendAlertsModel();
//assign logged in user to local variable
loggedInUser = app.user;
//set the user list to be the user list from the previous tab data
model.set("userList",options.previousTabData.get("userList"));
//set the alertUserList to be the previous tab user list by reference
model.set("alertUserList",options.previousTabData.get("userList"));
//push the logged in user into the alert user list
model.get("alertUserList").push(self.loggedInUser);
我认为当您将 alertUserList 设置为 userList 时会出现此问题。由于用户列表是一个对象, alertUserList 现在包含对userList的引用。它不是副本。当您更新 alertUserList 时,您实际上也在更新 userList 。
这样想:
var alertUserList = userList = {some object in memory};
在这一行中你需要创建一个副本而不是:
model.set("alertUserList",options.previousTabData.get("userList"));
我不确定userList是什么数据类型,因此它将依赖于此。如果你只需要一个浅的副本,那么你可以使用你的下划线/ lodash库(我认为这就是" _"是):
model.set("alertUserList",_.clone(options.previousTabData.get("userList")));