Gibt es eine Möglichkeit, Array-Elemente explizit als Verweis statt durch Wert festlegen?Javascript zuweisen Array-Elemente durch Referenz oder durch Wert
Beispielsweise kann diese Methode setzt die Array-Elemente durch Wert:
METHOD 1
var pushes = [2,1]
for(var i=0; i<pushes.length; i++)
{
vm.allEmployeesOnJob[i] = vm.allEmployees[pushes[i]];
}
und dieses Verfahren enthält die Arrayelemente durch Referenz:
METHODE 2
var pushes = [2,1]
vm.allEmployeesOnJob = [
vm.allEmployees[2],
vm.allEmployees[1]
];
Mein Anwendungsfall:
I Winkel-Bootstrap-duallistbox und um die beiden Listboxen bin mit richtig initialisiert werden, der „ng-Modell“ Array muss die „ng-Optionen“ Array-Elemente durch Bezugnahme verweisen. Dies ist auf das Verhalten des DOM-Elements "select" aus den von mir gelesenen Erklärungen zurückzuführen. Der Grund, warum ich weiß, dass die zweite Einstellung durch Referenz erfolgt, liegt daran, dass das Listenfeld ordnungsgemäß mit dieser Methode aktualisiert wird und nicht ordnungsgemäß mit der ersten Methode aktualisiert wird.
Was könnte der Unterschied sein?
Und gibt es eine Möglichkeit, Array-Elemente programmatisch zu den Elementen eines anderen Arrays durch Verweis explizit festzulegen?
EDIT:
vm.allEmployees ist ein Array von Mitarbeitern Objekten.
Inhalt des vm.allEmployees:
[ {
"employeeId":1,
"firstName":"Bill",
"lastName":"Test",
"email":null,
"phoneNumber":null,
"street":"1234 Sesame",
"city":"New York City",
"state":"New York",
"zip":"34555",
"activeFlag":true,
"homeLocationId":2,
"homeLocation":{
"locationId":2,
"customerId":2,
},
"displayName":"Bill Test - Newaygo" },
{
"employeeId":2,
"firstName":"Bob",
"lastName":"Test",
"email":null,
"phoneNumber":null,
"street":"1234 Sesame",
"city":"New York City",
"state":"New York",
"zip":"34555",
"activeFlag":true,
"homeLocationId":2,
"homeLocation":{
"locationId":2,
"customerId":2,
},
"displayName":"Bob Test - Newaygo" },
{
"employeeId":4,
"firstName":"John",
"lastName":"Doe",
"email":"[email protected]",
"street":"1234 Sesame St",
"city":"New York City",
"state":"New York",
"zip":"34555",
"activeFlag":true,
"homeLocationId":2,
"homeLocation":{
"locationId":2,
"customerId":2,
},
"displayName":"John Doe - Newaygo" },
{
"employeeId":5,
"firstName":"Bill",
"lastName":"Peterson",
"email":"[email protected]",
"street":"1234 test",
"city":"test city",
"state":"Maine",
"zip":"298379283",
"activeFlag":false,
"homeLocationId":2,
"homeLocation":{
"locationId":2,
"customerId":2,
},
"displayName":"Bill Peterson - Newaygo" },
{
"employeeId":6,
"firstName":"Jim",
"lastName":"Super",
"email":"[email protected]",
"phoneNumber":"459-456-4455",
"street":"1234 Sesame St",
"city":"New York City",
"state":"New York",
"zip":"34555",
"activeFlag":true,
"homeLocationId":2,
"homeLocation":{
"locationId":2,
"customerId":2,
},
"displayName":"Jim Super - Newaygo" } ]
Das hat wenig mit dem zu tun JavaScript selbst, aber mehr damit, wie AngularJS '' ng-Modell 'seinen Wert beobachtet. Ich schlage vor, Ihre Frage und Ihren Titel so zu bearbeiten, dass Ihre Verwendung von AngularJS deutlicher wird. Sie können auch zeigen, wie Sie Ihr 'ng-Modell' und' ng-Optionen' für beide Selektionen binden. –
Guter Punkt über den eckigen Teil @MikeMcCaughan. Der Javascript-Teil der Frage war jedoch die große Sorge für meine Frage.Scotts Antwort unten beantwortete diese Frage, daher denke ich, dass ich den Eckigen Teil dieser Frage für einen anderen Beitrag verlassen könnte, wenn ich das nicht funktioniere. –