2014-10-02 2 views
0

Я хочу нарисовать объект $scope.filters на var criteria при условии, если исходные поля являются нулевыми или нет.AngularJS Map one object to another

Так позволяет сказать, что у меня есть:

$scope.filters = { 
    name: 'myName' 
    lastName: null, 
    age: null, 
} 

Я хочу, чтобы мои var criteria быть отображены не являющихся полями нуль, как это:

var criteria = { 
    name: 'myName'; 
} 

Так что я попытался так:

var criteria = {}; 

angular.forEach($scope.filters, function (value, key, obj) { 
     if (value != null) { 
      this.push(obj) 
     } 
}, criteria); 

Но я думаю, что я что-то упустил.

+0

Что вы нажимаете? Ваши '$ scope.filters' являются объектом, а не массивом. – Oleg

ответ

1

criteria - это объект, а не массив, поэтому вы не можете его нажимать. Либо сделать это массивом, если вы хотите сохранить отдельные индивидуальные критерии, или заменить нажим с this[key] = value;

1

Вы должны сделать это так,

$scope.filters = { 
    name: 'myName' 
    lastName: null, 
    age: null, 
} 

var criteria = []; //array, you were using object 
    angular.forEach($scope.filters, function(value, key) { 
     if (value != null) { 
      this.push(key + ': ' + value); 
     } 

    }, criteria); 

expect(criteria).toEqual(['name: myName']); 

Надеется, что это помогает.