Puis-je lier uniquement la variable (pas l'objet) du service au contrôleur?AngularJS lie la variable du service au contrôleur
Pour objet de liaison, il fonctionne (à partir this answer):
<div ng-controller="myCtrl1">
1st Controller
<input type="text" ng-model="model1.prop1"/>
<input type="text" ng-model="model1.prop2"/>
</div>
<div ng-controller="myCtrl2">
2nd Controller
<input type="text" ng-model="model2.prop1"/>
<input type="text" ng-model="model2.prop2"/>
</div>
app.service('dataService', function() {
this.model = {
'prop1': '',
'prop2': ''
};
});
app.controller('myCtrl1', function($scope, dataService) {
$scope.model1 = dataService.model;
});
app.controller('myCtrl2', function($scope, dataService) {
$scope.model2 = dataService.model;
});
Mais je n'ai besoin que d'une variable (pas d'objet avec des propriétés).
<div ng-controller="myCtrl1">
1st Controller
<input type="text" ng-model="variable1"/>
</div>
<div ng-controller="myCtrl2">
2nd Controller
<input type="text" ng-model="variable2"/>
</div>
app.service('dataService', function() {
this.variable = '';
});
app.controller('myCtrl1', function($scope, dataService) {
$scope.variable1 = dataService.variable;
});
app.controller('myCtrl2', function($scope, dataService) {
$scope.variable2 = dataService.variable;
});
Cela ne fonctionne pas. Pourquoi?
Y a-t-il une bonne manière de faire cela (sans objet avec une seule propriété ou sans $watch
)?
C'est l'objet avec une propriété (une solution un peu moche si j'ai besoin d'une seule variable, mais je n'ai probablement pas d'autre choix). – mkczyk