$ブロードキャストを初期化段階で$ onに伝播させる方法はありますか?
<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);
};
}
サンプルフィドル:http://jsfiddle.net/jiaming/NsVPe/
スパンがNG変化関数に起因する入力の変化、などの値を表示します。
ただし、初期化フェーズでは、値「haha」は$ scope.testContentに伝播されず、最初の実行時には何も表示されませんでした。最初の実行時に "haha"という値を表示させる方法はありますか?
ありがとうございます。
をこんにちは、私は実際にアプリケーションの最初の実行時にテキスト「笑」にスパンを初期化する方法を探しています。私は問題は、sharedContent.setStandardContent( 'haha')がapp.run関数で呼び出されたときに、コントローラがまだ作成されていないことだと思います。したがって、最初の実行時に文字列 'haha'がスパンに移入されていません。文字列 'haha'が最初の実行時にスパンに移入されていることを確認するために呼び出すことができる他のメソッドはありますか? – jiaming
@jiaming TestCtrl2自体を "test"に設定するのではなく、 "haha"に設定してみませんか? – callmekatootie