我有一个简单的任务,事实证明这并不那么简单..我需要一个$scope
变量的副本,而不使用angular.copy()
,因为如果我使用复制功能,如果进行了更改,则该对象无法与观察者的newVal
进行比较,因为它不是同一个对象。所以if (newVal !== original)
永远不会评估到false
。我如何存储范围变量的原始值,但不再次更新此变量,即使范围变量发生更改?可能吗?如何复制/存储范围变量的原始值,而不更新范围变量时更新
core.directive('saveButton', function() {
return {
scope: {
actionParams: '=',
},
templateUrl: 'app/views/components/core/save-button.html',
link: function(scope, element, attrs) {
var original = scope.actionParams;
scope.$watch(function() {
return scope.actionParams;
}, function(newVal, oldVal) {
// I want to check if the original value has changed, not the previous value
if (newVal !== original) {
scope.changed = true;
}
else {
scope.changed = false;
}
}, true);
}
}
});
你给这个试试吗? http://stackoverflow.com/questions/29546930/is-the-angular-scope-binding-ampersand-a-one-time-binding – jcc
@jcc是的,也不工作:/ – Chrillewoodz