2015-10-09 3 views
0

есть ли сокращение для чего-то вроде этого?

var data = 
{ 
    name: $scope.admin.name, 
    email: $scope.admin.email, 
    roles: $scope.admin.roles 
}; 

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

$scope.admin = { 
    name: value1, 
    email: value2, 
    roles: value3 
} 

Отредактировано: Мой точный вопрос внутри данных вара, как я могу сделать его более простым, как и выше, не продолжайте печатать "$ scope.admin".

Благодаря

+0

Вы просите доступ javascript без использования 'this'. Лучшее, что вы можете сделать, это использовать синтаксис 'controller as' и использовать' self' или 'this'. –

+0

Вопрос непонятен, какова ваша проблема и чего вы хотите достичь? – Desty

+0

Привет @Desty Я обновляю свой вопрос выше. надеюсь, что он станет более ясным, что я пытаюсь достичь – ssuhat

ответ

1

Если вы не хотите, глубокую копии с angular.copy(), но просто хотите набрать меньше знаков в коде, вы можете сделать

var x = $scope.admin; 
var data = 
{ 
    name: x.name, 
    email: x.email, 
    roles: x.roles 
}; 
1

Если вам нужно скопировать все свойства, использовать angular.copy:

angular.copy($scope.admin, $scope.user) 

Если вам нужно выбрать подмножество свойств, библиотека как lodash может быть полезным , Вы бы использовать pick функции:

$scope.admin = { 
    firstname: 'John', 
    name: 'Doe', 
    email: '[email protected]', 
    roles: ['sysadmin'] 
}; 

$scope.user = _.pick($scope.admin, ['name', 'email', 'roles']); 

// -> {name: 'Doe', email: '[email protected]', roles: ['sysadmin']} 
+0

Привет, спасибо за помощь. вот что я ищу. но я не использую lodash. есть ли какой-либо угловой способ? чтобы сохранить этот $ scope.admin в var, чтобы я мог опубликовать его. – ssuhat

+0

Ну, это больше проблема * js *, чем угловая. Вы могли бы сделать это в простых js, хотя, но это не было бы oneliner. –

+0

О, ладно. Благодаря! – ssuhat

Смежные вопросы