2016-09-22 3 views
1

Я получаю выход JSon из Laravel проверки запроса 5,2 видаAppend значение ключа пара в angularjs объект

Мой выход JSON является:

{ 
    "title": [ 
     "The title field is required." 
    ], 
    "description": [ 
     "The description field is required." 
    ], 
    "address.city": [ 
     "City field is required" 
    ] 
} 

Добавляя этот вывод объекта

var self = this; 
self.error = { 
    address: {} 
}; 

var onFailure = function (response) { 
    angular.forEach(response.data, function(value, key) { 
     self.error[key] = value[0]; 
    }); 
}; 

I хочу получить доступ к этому объекту ошибки к моему представлению, для «address.city», я не могу получить к нему доступ с помощью «ctrl.error.address.city», остальное я могу получить

Как добавить объект с ключом, содержащим "." и показать это в поле зрения?

ответ

1

Вот что вам нужно. Но лучше не иметь (.) В имени свойства. Вместо этого вы можете использовать знак подчеркивания (_). Избегайте использования точки (.) Как chaaracter в именах свойств.

var myApp = angular.module('MyApp', []); 
 

 
myApp.controller('MyCtrl', function ($scope) { 
 
$scope.foo={}; 
 
    $scope.foo['hello.There'] = "I'm foo!"; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="MyApp" ng-controller="MyCtrl"> 
 
    {{foo["hello.There"]}}<br /> 
 
    <input type="text" ng-model="foo['hello.There']" /> 
 
</div>

0

Если вы знаете имя ключа, то единственный способ доступа к нему - [].

Проверьте скрипку для получения дополнительной информации.

https://jsfiddle.net/9f4mbh1h/1/ 
0

Вы должны изменить свой код этой

в контроллере

myApp.controller('MyCtrl', function ($scope) { 
$scope.foo={}; 
$scope.foo "hi"; 
    }); 

в HTML

<div ng-app="MyApp" ng-controller="MyCtrl"> 
    <input type="text" ng-model="foo" /> </div> 
Смежные вопросы