Мы опробовали angular.copy и angular.extend. Оба они, однако, копируют значения свойств. Как скопировать свойства одного объекта без их значений другому объекту?Использование Угловое копирование свойств объекта - без значений - на другой объект
Вот fiddle с нашими запросами на основе how-to-quickly-clear-a-javascript-object.
angular.module('App', []);
function Ctrl($scope) {
function copyNotValues(obj) {
var newObj = angular.copy(obj);
for (prop in newObj) {
if(newObj.hasOwnProperty(prop))
{
newObj[prop] = null;
}
};
return newObj;
}
$scope.master = {
foo: 'original foo',
bar: 'original bar'
};
$scope.copy = angular.copy($scope.master);
$scope.extend = angular.extend($scope.master);
$scope.copyNotValues = copyNotValues($scope.master);
}
Спасибо за это! Мой подход будет состоять в том, чтобы использовать angular.copy(), перебрать новый объект и установить для каждого из его свойств значение null. Создание «главного» объекта может быть хорошим для другой ситуации, потому что мой объект интереса исходит из вызова REST и имеет много свойств, поэтому создание мастера будет заключаться в многократном дублировании кода. –
@ShaunLuttin В моем опыте ActionScript; было много смысла дублировать объекты на стороне сервера и на клиенте. Но поскольку JavaScript является свободно типизированным языком, вы, вероятно, правы, что накладные расходы не имеют смысла. Я уверен, что a для каждого цикла предоставит вам все свойства объекта; и вы должны иметь возможность инкапсулировать это в функцию полезности для простого повторного использования. Удачи! – JeffryHouser
Отличные советы! Мы уже дублируем объекты на стороне сервера и клиента. На сервере у нас есть как привязывающая модель, так и модель представления. А на клиенте у нас есть ng-модель, которая существует в HTML-шаблоне. Если бы мы также дублировали модель в ng-контроллере, тогда у нас было бы четыре представления одной и той же модели! Как вы говорите, три из них достаточно накладные. JavaScript for loop сделал трюк в функции утилиты, которую мы ввели в услугу «Угловая». Спасибо за поддержку! –