Heim  >  Artikel  >  php教程  >  AngularJS erweitert Nutzungsdetails und Beispielcode

AngularJS erweitert Nutzungsdetails und Beispielcode

高洛峰
高洛峰Original
2016-12-06 16:24:311462Durchsuche

AngularJS-Erweiterungsverwendung

angle.extend: Kopieren Sie die Eigenschaften der ersten Ebene des zweiten Parameters und nachfolgender Parameter (unabhängig davon, ob es sich um einfache Eigenschaften oder Objekte handelt) und weisen Sie sie den Eigenschaften der ersten Ebene des ersten Parameters zu . Attribut, das heißt, wenn es sich um ein Objekt handelt, verweist es auf dasselbe Objekt und gibt das erste Parameterobjekt zurück.

Beispiel 1: var r = angle.extend(b, a); Kopieren Sie das Attribut der ersten Ebene von Objekt a (ob es sich um ein einfaches Attribut oder ein Objekt handelt) und weisen Sie es dem ersten zu. Ebenenattribut des Objekts b, das heißt, wenn es sich um ein Objekt handelt, verweist es auf dasselbe Objekt und gibt das Objekt b zurück

Js-Code

var a = {
  name : 'bijian',
  address : 'shenzhen',
  family : {
    num : 6,
    amount : '80W'
  }
};
var b = {};
var r = angular.extend(b, a);
console.log('a:' + JSON.stringify(a));
console.log('b:' + JSON.stringify(b));
console.log('r:' + JSON.stringify(r));
  
b.address = 'hanzhou';
b.family.amount = '180W';
console.log('a:' + JSON.stringify(a));
console.log('b:' + JSON.stringify(b));
console.log('r:' + JSON.stringify(r));

Laufergebnisse:

Textcode

a:{"name":"bijian","address":"shenzhen","family":{"num":6,"amount":"80W"}}
b:{"name":"bijian","address":"shenzhen","family":{"num":6,"amount":"80W"}}
r:{"name":"bijian","address":"shenzhen","family":{"num":6,"amount":"80W"}}
a:{"name":"bijian","address":"shenzhen","family":{"num":6,"amount":"180W"}}
b:{"name":"bijian","address":"hanzhou","family":{"num":6,"amount":"180W"}}
r:{"name":"bijian","address":"hanzhou","family":{"num":6,"amount":"180W"}}

Beispiel 2: var r = angle .extend(b, a, z); Kopieren Sie nacheinander die Attribute der ersten Ebene der Objekte a und z (unabhängig davon, ob es sich um einfache Attribute oder Objekte handelt) den Attributen der ersten Ebene von Objekt b, das heißt, wenn es sich um ein handelt Objekt, es verweist auf dasselbe Objekt und gibt das Objekt b zurück

Js-Code

var a = {
  name : 'bijian',
  address : 'shenzhen',
  family : {
    num : 6,
    amount : '80W'
  }
};
var z = {
  family : {
    amount : '150W',
    mainSource : '经营公司'
  }
};
var b = {};
var r = angular.extend(b, a, z);
console.log('a:' + JSON.stringify(a));
console.log('b:' + JSON.stringify(b));
console.log('r:' + JSON.stringify(r));
  
b.address = 'hanzhou';
b.family.amount = '180W';
console.log('a:' + JSON.stringify(a));
console.log('b:' + JSON.stringify(b));
console.log('r:' + JSON.stringify(r));

Laufergebnis:

Textcode

a:{"name":"bijian","address":"shenzhen","family":{"num":6,"amount":"80W"}}
b:{"name":"bijian","address":"shenzhen","family":{"amount":"150W","mainSource":"经营公司"}}
r:{"name":"bijian","address":"shenzhen","family":{"amount":"150W","mainSource":"经营公司"}}
a:{"name":"bijian","address":"shenzhen","family":{"num":6,"amount":"80W"}}
b:{"name":"bijian","address":"hanzhou","family":{"amount":"180W","mainSource":"经营公司"}}
r:{"name":"bijian","address":"hanzhou","family":{"amount":"180W","mainSource":"经营公司"}}

Egal wie viele Beispiele es gibt, er ist nicht so einfach, direkt und genau wie der Quellcode. Der Quellcode von angle.extend lautet wie folgt:

Js-Code

/**
 * @ngdoc function
 * @name angular.extend
 * @function
 *
 * @description
 * Extends the destination object `dst` by copying all of the properties from the `src` object(s)
 * to `dst`. You can specify multiple `src` objects.
 *
 * @param {Object} dst Destination object.
 * @param {...Object} src Source object(s).
 * @returns {Object} Reference to `dst`.
 */
function extend(dst) {
 var h = dst.$$hashKey;
 forEach(arguments, function(obj){
  if (obj !== dst) {
   forEach(obj, function(value, key){
    dst[key] = value;
   });
  }
 });
  
 setHashKey(dst,h);
 return dst;
}


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn