Ich habe eine Funktion make_value_summary
, die generisch eine Zusammenfassung von $scope
Felder macht. Hier verwende ich es, um location_summary
zu konstruieren, gebunden an die Ansicht durch ng-bind
. location_summary
wird aktualisiert, wenn die Felder street
, suburb
oder state
aktualisiert werden.
$scope.location_summary = function() {
var fields = [
'street',
'suburb',
'state',
];
return make_value_summary(fields, $scope, 'Location?');
};
function make_value_summary(fields, $scope, initial) {
var summary = '';
fields.forEach(function(field) {
if ($scope[field] && $scope[field] !== '0') {
if (summary) {
summary = summary + ', ' + $scope[field];
}
else {
summary = $scope[field];
}
}
});
if (summary) {
return summary[0].toUpperCase() + summary.substring(1);
}
else {
return initial;
}
}
Frage 1: Wie dynamisch aktualisiert werden nicht location_summary
, von meinem ersten Blick auf den Code es wie make_value_summary
sieht nur einmal ausgeführt werden, wenn location_summary
zuerst zugewiesen wird.
Frage 2: Ich möchte location_summary
zu einem ganz anderen Teil der Ansicht über einen Dienst binden. Wie gehe ich vor, um location_summary
an einen Service Location
anzufügen. Ich habe versucht, $watch
aber ohne Erfolg zu verwenden.
$scope.$watch('location_summary', function(newValue, oldValue) {
// Just gives unevaluated reference to location_summary function
console.log(newValue);
console.log(oldValue);
});
EDIT
erhielt eine Lösung 2 durch die Funktion in der Uhr 'Auswerten', das heißt in 'location_summary()'
$watch()
passieren. Möchte immer noch eine Antwort auf meine erste Frage!