Я изучаю angularjs и имею некоторые проблемы с пониманием того, как эта концепция работает.AngularJs и ngResource scope
В контроллере у меня есть следующие:
Customer.get({id: customer_id, action: 'edit', format : 'json'}, function(resource) {
$scope.selected_customer = resource.customer;
console.log($scope.selected_customer);
}, function(response) {
});
Это работает. Он извлекает данные со стороны сервера (я использую рельсы), а console.log показывает, чего я ожидал бы.
Концепция, с которой я столкнулся, - это доступ к $ scope.selected_customer.
Например, в этом следующем случае второй журнал не покажет объект клиента, который я ожидаю, но вместо этого его угловой объект, который может быть обещанием? (Я использую неустойчивый 1.1.4 fyi).
test = Customer.get({id: customer_id, action: 'edit', format : 'json'}, function(resource) {
$scope.selected_customer = resource.customer;
console.log($scope.selected_customer);
}, function(response) {
});
// undefined
console.log($scope.selected_customer);
// angular object b{$resolved: false, $then: function, $get: function, $save: .... }
console.log(test);
Поэтому, если я хочу, чтобы шаблон отображал информацию об этом клиенте, на данный момент его невозможно.
Вот полный контроллер. Вы можете видеть, что я хочу, чтобы получить объект, а затем изменить расположение , который будет что шаблон для редактирования этого выбранного клиента:
function CustomersEditController($scope, $location, Customer) {
$scope.edit_customer = function(customer_id) {
Customer.get({id: customer_id, action: 'edit', format : 'json'}, function(resource) {
$scope.selected_customer = resource.customer;
$location.path('/customers/' + customer_id_id + '/edit');
}, function(response) {
console.log('ERROR');
});
};
};
Это работает отлично кроме этого не заселить форму с selected_customers свойства по причине это scope выпуск.
Вот моя служба:
var customer_service = angular.module('customer_service', ['ngResource', 'ui']);
customer_service.factory('Customer', function($resource) {
return $resource('/customers/:id/:action', {id: '@id'}, {
update: { method: 'PUT' }
});
});
Моя форма в шаблоне (используя тонкий)
div.center
form(ng-submit='submit()' ng-controller='CustomersEditController')
input(type='text' ng-model='selected_customer.first_name')
Я использую routeProvider:
angular.module('customer_app', ['customer_service'])
.config(['$routeProvider', function($provider) {
$provider.when('/:customer_id/edit/', { templateUrl: '/assets/customers/edit.html.slim', controller: 'CustomersController' });
}])
.config(["$httpProvider", function(provider) {
provider.defaults.headers.common['X-CSRF-Token'] = $('meta[name=csrf-token]').attr('content');
}]);
Вот моя страница индекса рельсы , который начинает вечеринку: Его справедливо:
div(ng-app="customer_app")
h1 Customers
div(ng-view)
Любая помощь или ссылка на документы, которые, возможно, я пропустил (или неправильно понял), было бы замечательно!
Где находится форма и как вы ее заполняете (как она связана с областью)? – Thilo
Я добавил форму в главный пост. – jacklin
Вы вообще используете '$ routeProvider' и' ngView'? Если да, можем ли мы увидеть ваши Угловые маршруты? –