Это все в «волшебном» синтаксисе вызова метода:
object.property();
Когда вы получаете свойство из объекта и вызываете его за один раз, объект будет контекстом для метода , Если вы вызываете тот же метод, но в отдельных шагах, контекст представляет собой глобальную область (окно):
var f = object.property;
f();
Когда вы получаете ссылку на метод, он больше не привязан к объекту, это просто ссылка на простую функцию. То же самое происходит, когда вы получаете ссылку на использование в качестве обратного вызова:
this.saveNextLevelData(this.setAll);
Здесь вы привязываете контекст к функции:
this.saveNextLevelData(this.setAll.bind(this));
Если вы используете jQuery вы должны использовать метод $.proxy
, а bind
не поддерживается во всех браузерах:
this.saveNextLevelData($.proxy(this.setAll, this));
Да, Parse предоставляет методы для сохранения имени пользователя, паролей, таких как setUsername (params) и setPassword (params), но если вы хотите добавить больше данных в таблицы, вы можете создать больше столбцов в соответствии с вашими потребностями, как в этом фрагмент кода.
Если вы столкнулись с столбцами, созданными уже в парсинге парсера, таких как имя, телефон, адрес, cityState, companyId, вот как я это делаю.
private void savetoParse() {
ParseUser user = new ParseUser();
user.setUsername(usernameEditText.getText().toString());
user.setPassword(passEditText.getText().toString());
user.put("name", nameEditText.getText().toString());
user.setEmail(emailEditText.getText().toString());
user.put("phone", phoneNoEditText.getText().toString());
user.put("address", addressEditText.getText().toString());
user.put("cityState", cityStateEditText.getText().toString());
user.put("companyID", compSchoolIdEditText.getText().toString());
user.signUpInBackground(new SignUpCallback() {
@Override
public void done(ParseException e) {
if (e != null) {
Toast.makeText(SignupActivityUpdate.this,
"Saving user failed.", Toast.LENGTH_SHORT).show();
Log.w(TAG,
"Error : " + e.getMessage() + ":::" + e.getCode());
if (e.getCode() == 202) {
Toast.makeText(
SignupActivityUpdate.this,
"Username already taken. \n Please choose another username.",
Toast.LENGTH_LONG).show();
usernameEditText.setText("");
passEditText.setText("");
confirmPassEditText.setText("");
}
} else {
Toast.makeText(SignupActivityUpdate.this, "User Saved",
Toast.LENGTH_SHORT).show();
/*Do some things here if you want to.*/
}
}
});
ПРИМЕЧАНИЕ. Первыми параметрами являются имя столбца, а второе - значение. Таким образом, он в основном действует как пара значений ключа.
Это решает проблему. Возможно, если это работает ... удачи ..:)
/**
* user Registration here
* save user registration value on server here
*/
private void userRegistration()
{
progressDialog=new ProgressDialog(SignUpThirdPage.this);
progressDialog.setMessage("Please Wait......");
progressDialog.setCancelable(false);
progressDialog.show();
ParseUser user = new ParseUser();
user.setUsername("Name");
user.setPassword(strPassword);
user.setEmail(strEmailId);
// surName column create on parse.com db you can check after run that code
// like that u can add more column in signup table
user.put("surName","Kumar");
user.signUpInBackground(new SignUpCallback() {
@Override
public void done(com.parse.ParseException e) {
// TODO Auto-generated method stub
if (e == null) {
}
} else {
// Sign up didn't succeed. Look at the ParseException
// to figure out what went wrong
e.printStackTrace();
progressDialog.dismiss();
if(e.getMessage().contains("already taken")){
alertDialog("", "you've already sign up , lets login in ", SignUpThirdPage.this, false);
}
else if(e.getMessage().contains("has already been taken")){
alertDialog("", "you've already sign up , lets login in ", SignUpThirdPage.this, false);
}
else {
AppConstants.showAlertDialog("", e.getMessage(), SignUpThirdPage.this, false);
}
}
}
});
}