splincodewd
@splincodewd
Developer

Как заменить объекты не по ссылке, а по значению?

В общем и целом, изменение родительского объекта не принесло мне пользы, Angular никак не реагировал. Однако, когда я просто у оригинального родительского объекта заменял свойства и вызывал

angular.element($( 'body' )).scope().$apply()

То Angular перерисовывал мне DOM

Подскажите пожалуйста, я до этого не сталкивался с таким, как правильно заменить все свойства объекта свойствами другого объекта? Есть ли какая-нибудь нормальная народная функция или метод в стандарте?

К примеру:

Есть у меня оригинальный объект, который слушает Angular:

let service = {

		start: false, // запущена ли отрисовка
		ye: 10, // условные единицы
		kq: 1,
		kF: 1,

		base: {
			A: 100, // A
			L: 10, // L
			q: false
		},

		structure: {
			item: [], // KernelList
			F: [],
			leftSealing: false, // заделка слева
			rightSealing: false // заделка
		}
	};


Однако, мне нужно, чтобы я мог легко свойства этого объекта менять на свои и вызывать apply
Например, таким объектом

{
	"start": true,
	"ye": 10,
	"kq": 1,
	"kF": 1,
	"base": {
		"A": 100,
		"L": 10,
		"q": false
	},
	"structure": {
		"item": [
			{
				"A": 100,
				"L": 10,
				"q": false
			},
			{
				"A": 100,
				"L": 10,
				"q": 1
			},
			{
				"A": 100,
				"L": 10,
				"q": false
			},
			{
				"A": 100,
				"L": 10,
				"q": false
			}
		],
		"F": [
			null,
			null,
			null,
			-1
		],
		"leftSealing": false,
		"rightSealing": false
	}
}


простое service = newService не срабатывает, Angular просто держит ссылку на другой объект (ссылку в итоге мы теряем)

мне нужно, чтобы свойства service заменялись на свойства newService
  • Вопрос задан
  • 156 просмотров
Решения вопроса 1
angular.extend(service, newService) пробовали?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы