Javascript Angular.js模型首次更新后未更新
我举了一个例子: 如果您双击列表中的“文本消息”,它将显示一个输入框。 在输入框中键入“一”,然后单击更新按钮。 请注意console.log 单击SmsResponseActionParmAndValue展开并找到“文本消息”选项 单击ParmAndValue展开,注意Value属性中有我们键入的“一”值 现在在输入框中输入2,查看console.log,注意到它没有更新吗?它只是第一次更新Javascript Angular.js模型首次更新后未更新,javascript,angularjs,Javascript,Angularjs,我举了一个例子: 如果您双击列表中的“文本消息”,它将显示一个输入框。 在输入框中键入“一”,然后单击更新按钮。 请注意console.log 单击SmsResponseActionParmAndValue展开并找到“文本消息”选项 单击ParmAndValue展开,注意Value属性中有我们键入的“一”值 现在在输入框中输入2,查看console.log,注意到它没有更新吗?它只是第一次更新 请提供帮助…,它将在选定对象中更新,而不是在主JSON对象中 $scope.updateDetail
请提供帮助…,它将在选定对象中更新,而不是在主JSON对象中 $scope.updateDetails=函数(){
我知道这很难看,但这是一个解决方案:
$scope.updateDetails = function() {
angular.forEach($scope.actions.SmsResponseActionParmAndValue,function(action){
if(action.Description === $scope.selectedAction.Description){
console.log($scope.selectedAction)
action.ParmAndValue = $scope.selectedAction.ParmAndValue
return;
}
});
console.log($scope.actions)
};
问题是,更新后的模型在内存中没有指向与原始对象相同的数组,因此我们必须更新原始对象指向的数组。您应该将理解问题所需的代码发布在so上。链接可能会更改,没有人会理解这是怎么回事。此处的代码:但更新一次,很好…但不超过一次…它是同一个数组…我想答案是$digest()。但我还不知道足够多…这很奇怪,因为对我来说,当按下按钮时它不会更新。“文本消息”的值是空字符串,当你执行console.log in$scope.updateDetails时。这在Chrome 48.0.2564.103(64位)上在linux上,但我不知道这是否与结果有关。。。
$scope.updateDetails = function() {
angular.forEach($scope.actions.SmsResponseActionParmAndValue,function(action){
if(action.Description === $scope.selectedAction.Description){
console.log($scope.selectedAction)
action.ParmAndValue = $scope.selectedAction.ParmAndValue
return;
}
});
console.log($scope.actions)
};