gpt4 book ai didi

javascript - Angular 数据绑定(bind)未更新正确的模型范围

转载 作者:行者123 更新时间:2023-12-01 17:52:07 25 4
gpt4 key购买 nike

在作用域对象 userNotify 上有一些继承问题(希望如此)。

AccountCtrl 处理用户帐户数据的查看和更新​​,数据来自 Parse.com 数据库,通过 UserService 服务。

.controller('AccountCtrl', [
'$state', '$scope', 'UserService',
function ($state, $scope, UserService) {

UserService.currentUser().then(function (_user) {
$scope.user = _user;
notification = _user.get('days');
$scope.userNotify = {days: notification};
});

$scope.updateUser = function (_user) {
days = $scope.userNotify.days;
// days is logged with the correct value (if the user changed)
// but the db record is updated with the initial value not the new one.
// tested this by changing days to a random number.
console.log(days);
_user.set('days', days);
_user.save();
}

}])

数据显示在 View 中,updateUser 函数应该更新 Parse 数据库中的用户数据。

  <div ng-controller="AccountCtrl">
<select ng-model="$parent.userNotify.days">
<option>1</option>
<option>2</option>
<option>3</option>
</select>
<a ng-click="updateUser($parent.user)">Save</a>
</div>

当在 updateUser 函数中调用 _user.set 时,$scope.userNotify.days 具有数据库中的旧值,因此使用相同的值更新,而不是用户选择的新值。即使 console.log(days) 显示正确的新值。

还尝试删除 $parent 并使用基本类型。

这是返回 Promise 的 UserService:

    .service('UserService', ['$q', 'ParseConfiguration',
function ($q, ParseConfiguration) {

return {
/**
* @param _parseInitUser
* @returns {Promise}
*/
currentUser: function (_parseInitUser) {

_parseInitUser = Parse.User.current();

if (!_parseInitUser) {
return $q.reject({error: "noUser"});
} else {
return $q.when(_parseInitUser);
}
}
}
}]);

非常感谢

最佳答案

尝试将其作为 html 中的代码段

<body ng-controller="MainCtrl as main">
<ion-view>
<label class="item item-input item-select">
{{currentSelection.value}}
<select ng-model="currentSelection" ng-options="day as day.value for day in days track by day.value" style="width: 30px">
</select>
</label>
<a class="button" ng-click="updateUser($parent.user)">Save</a>
</ion-view>
</body>

这是javascript代码

angular.module('app', ['ionic'])
.controller('MainCtrl', ['$scope', function($scope) {

$scope.currentSelection = {};
$scope.currentSelection.value = 1;

$scope.days = [
{ value: 1 },
{ value: 2 },
{ value: 3 }
];
$scope.updateUser = function() {
days = $scope.currentSelection;
alert(JSON.stringify(days));
}
}]);

不确定为什么要乱用 $parent 来访问用户?当前只有一个用户,Parse 提供了一项功能,让您可以在整个应用程序中访问它。

$scope.updateUser = function() {
UserService.currentUser().then(function (_user) {
return _user.save({days:daysValue});
}).then(function(_updatedUser){
console.log(_updatedUser);
}, function(_error) {
console.log(_error);
});
};

关于javascript - Angular 数据绑定(bind)未更新正确的模型范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32052459/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com