【发布时间】:2019-07-23 05:00:11
【问题描述】:
我有一个模板:
<p class="text-right">
<a ng-click="editTherapeuticProposal(meow.accepted_tp)" class="fa fa-pencil"></a>
</p>
它调用在其控制器中定义的 editTherapeuticProposal 函数,将 meow.accepted_tp 对象传递给它(这里我使用 angular-dialog-service:https://github.com/m-e-conroy/angular-dialog-service):
// here tp is equal to meow.accepted_tp
$scope.editTherapeuticProposal = function(tp) {
dialogs.create('surgeon/templates/create_edit_therapeutic_proposal.tpl.html', 'SurgeonCreateEditTherapeuticProposalCtrl', {scope: $scope, tp: tp}, { copy: false });
};
tp 是一个对象。
然后在对话框控制器中我显示一个表单以便让用户修改 tp.我做了一些事情,相关的是:
// data is the object received by the dialog controller: {scope: $scope, tp: tp}
if(typeof data.tp != 'undefined') {
$scope.therapeuticProposal = angular.copy(data.tp);
}
我复制对象以处理不同的对象(如果未保存数据,我不希望更新数据)
当按下对话框中的保存按钮时,会运行以下函数:
var complete = function(tp) {
data.tp = tp;
//...
}
好的,问题是父作用域中的meow.accepted_tp 没有得到更新。如果我这样做了
var complete = function(tp) {
data.tp.title = 'meow';
//...
}
它的标题已更新。原型继承显然有问题,我知道为了更新变量,它们应该是对象的属性,但是 tp 已经作为(数据对象的)对象属性传递。有什么想法吗?
【问题讨论】:
标签: angularjs