0
ローカライゼーションを達成するためにイベントlangChange
をブロードキャストしました。 ここでの問題は、langChange
も解雇されたときに、このコントローラーが接続されているページに入るときにthis.loadContent()
と呼ぶエレガントな方法を見つけることです。 それはbind(this)
私は私が推測したいことをやりません。角度でのコンテキストバインディング
var $this=this; [...]
のようなthis
エイリアス解決策は避けます。
app.controller('ctrl', ["$scope","Service",
function($scope,Service){
this.loadContent = (function(){
Service
.getSection()
.then(function (res) {
$scope.content = res.data.template;
});
}());
$scope.$on('langChange', (function(){
this.loadContent();
}).bind(this));
}]);
EDIT: @Petr Averyanovの回答に基づいて、私は以下のソリューションを試みたが、langChange
が発射されるときloadContent
さえ呼ばれていません。
app.controller('ctrl', ["$scope","Service",
function($scope,Service){
console.log("loading content..")
var _this = this;
_this.loadContent = function(){
console.log("load")
tutorialService
.getSection()
.then(function (res) {
$scope.content = res.data.template;
});
}();
$scope.$on('langChange', _this.loadContent);
}]);
私も1を試してみましたが、私は文脈上の問題が残っていると思います_this.loadContent is not a function
を取得し、彼のポストにコメントし...
私は 'this'について知っていますエイリアスソリューション。可能であれば、私はこの解決策を避けるだろう。 – alfredopacino
@alfredopacino解決策について知っていますが、その解決策を使用しないことを選択した場合、この種の混乱を避けるために、「これを解決する別の方法を探しています。回答者や同様の問題を抱えている可能性があるが回避された解決策については知りません。 – Claies
詳細を編集しました – alfredopacino