czy istnieje sposób, aby transmisja $ propagowała zmienną do $ on podczas fazy inicjalizacji?
<div ng-app='test'>
<div ng-controller='testCtrl'> <span>{{testContent}}</span>
</div>
<div ng-controller="testCtrl2">
<input type='text' ng-change="updateContent()" ng-model="testContent2" />
</div>
</div>
var app = angular.module('test', []);
app.factory('sharedContent', function ($rootScope) {
var standardContent;
var resizeProportion;
return {
setStandardContent: function (newStandardContent) {
standardContent = newStandardContent;
$rootScope.$broadcast('updateContent');
console.log('broadcast');
},
getStandardContent: function() {
return standardContent;
},
setResizeProportion: function (newResizeProportion) {
$rootScope.$broadcast('updateResizeProportion');
},
}
});
app.run(function (sharedContent) {
sharedContent.setStandardContent('haha');
});
function testCtrl($scope, sharedContent) {
$scope.testContent;
$scope.$on('updateContent', function() {
console.log('receive');
$scope.testContent = sharedContent.getStandardContent();
});
}
function testCtrl2($scope, sharedContent) {
$scope.testContent2 = 'test';
$scope.updateContent = function() {
sharedContent.setStandardContent($scope.testContent2);
};
}
skrzypacz próbki: http://jsfiddle.net/jiaming/NsVPe/
Rozpiętość wyświetla wartość w zależności od zmian wejściowego, która ze względu na funkcję ng zmiany.
Jednak w fazie inicjalizacji wartość "haha" nie była propagowana do obiektu $ scope.testContent, a zatem nic nie było wyświetlane w pierwszym środowisku wykonawczym. Czy istnieje sposób, aby wartość "haha" pojawiła się w pierwszym uruchomieniu?
Dziękuję.
Witam, jestem rzeczywiście szukają sposobu, aby zainicjować rozpiętość do tekstu „haha” przy pierwszym starcie aplikacji. Myślę, że problem polega na tym, że gdy funkcja sharedContent.setStandardContent ("haha") jest wywoływana w funkcji app.run, kontrolery nie zostały jeszcze utworzone. W związku z tym ciąg "haha" nie jest zapełniany do zakresu w pierwszym uruchomieniu. Czy istnieje inna metoda, którą mógłbym wywołać w celu zapewnienia, że ciąg "haha" jest zapełniany do zakresu w pierwszym środowisku wykonawczym? – jiaming
@jiaming Dlaczego nie ustawisz wartości "haha" w samym TestCtrl2 zamiast ustawić ją na "test"? – callmekatootie