2014-09-27 1 views
3

Я работаю с угловыми и паспортными данными для аутентификации пользователей; Я пытаюсь передать зарегистрированный идентификатор пользователя при сохранении формы, но просто не могу заставить ее работать. Мой код очень прост:AngularJS - вызов ng-submit с параметром

site.jade: 

div(ng-controller='sitesController') 
    h1 #{user.local.email} 
    form.(ng-submit="createSite(user)") 
     label Site Name 
     input.(type="text" ng-model="siteName") 
     button.btn.btn-primary(type="submit") Save 


sitesController.js 

$scope.createSite = function (user) { 
     console.log(user); // user = undefined 
} 

Пользователь всегда «не определено» (в console.log), несмотря на то, что я в состоянии показать электронную почту.

Любые идеи?

Благодаря

+0

Вы хотите сделать это, не делая дополнительный запрос '$ http'? – Pytth

+0

где соединение между формой и пользователем? Снипеты показанного кода кажутся несвязанными. Что такое 'siteName'? – charlietfl

+0

У меня есть модель под названием Site with siteName и другие, но я думаю, что на данный момент это не имеет значения (?). siteController.js - это реализация контроллера, на которую ссылается ng-контроллер выше. –

ответ

3

Как ваша форма должна знать, что user это? Причина, по которой она не определена, заключается в том, что вы ее не определили. Почему бы просто не сделать так?

site.jade: 

div(ng-controller='sitesController') 
    h1 #{user.local.email} 
    form.(ng-submit="createSite()") 
      //removed the argument from above. 
     label Site Name 
     input.(type="text" ng-model="siteName") 
     button.btn.btn-primary(type="submit") Save 


sitesController.js 

$scope.createSite = function() { 
     console.log($scope.siteName); 
} 

В вашей $scope.createSite() функции, значение user НЕ было такое же значение, как это было бы вне этой функции. Причина этого в том, что когда значение user используется в качестве аргумента в определении функции, пытаясь вызвать это значение - как вы это делали в своем заявлении console.log(user) - вы по существу говорите «console.log переданное значение в эту функцию ». Пожалуйста, простите меня, если вы уже знаете это, но в аргументах функции JavaScript действуют только как ссылки на значения, вызываемые функцией.

Немного JSfiddle to illustrate my point.

+0

Спасибо за подробный ответ. Возможно, я пропустил что-то в вашем ответе; Я не хотел слишком усложнять свой вопрос слишком большим количеством кода. Как я уже сказал, я могу распечатать электронную почту пользователя (см. Тег h1). Ваш код не решает мою проблему, так как мне нужно передать идентификатор пользователя функции createSite. –

+0

Прошу простить мое замешательство. Когда пользователь доберется до формы, они уже вошли в систему? – Pytth

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