angularjs を学習していますが、この概念がどのように機能するかを理解するのに苦労しています。
コントローラーには次のものがあります。
Customer.get({id: customer_id, action: 'edit', format : 'json'}, function(resource) {
$scope.selected_customer = resource.customer;
console.log($scope.selected_customer);
}, function(response) {
});
これは機能します。サーバー側からデータを取得し(私は rails を使用しています)、その console.log は私が期待するものを示しています。
私が問題を抱えている概念は、$scope.selected_customer へのアクセスです。
たとえば、この次のケースでは、2 番目のログには、私が期待する顧客オブジェクトが表示されませんが、代わりに、おそらく約束である角度のあるオブジェクトが表示されますか? (私は不安定な 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 プロパティが入力されないことを除いて、これは正常に機能します。
これが私のサービスです:
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' }
});
});
私のフォームはテンプレートにあります( Slim を使用)
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');
}]);
これが私の Rails インデックス ページで、パーティーが始まります。
div(ng-app="customer_app")
h1 Customers
div(ng-view)
私が見逃した(または誤解した)可能性のあるドキュメントへのヘルプまたはリンクは素晴らしいでしょう!