У меня простая задача, которая оказалась не такой простой. Мне нужно взять копию переменной $scope
, не используя angular.copy()
, потому что, если я использую функцию копирования, объект не может сравниться с наблюдателя, если это изменение сделано, потому что это не тот же объект. Таким образом, 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