Angularjs 标签文本更改时,Angular UI pager指令不会重新呈现
我正在使用AngularJS和AngularUI引导。对于i18n,我使用角度平移,它提供了一个过滤器Angularjs 标签文本更改时,Angular UI pager指令不会重新呈现,angularjs,internationalization,angular-ui,angular-ui-bootstrap,Angularjs,Internationalization,Angular Ui,Angular Ui Bootstrap,我正在使用AngularJS和AngularUI引导。对于i18n,我使用角度平移,它提供了一个过滤器|translate来处理平移。使用以下代码,pager指令的previous text和next text不会在视图中更新,而所有其他标签在更改语言时都会正确更改 如何强制pager指令重新呈现与当前翻译相对应的内容?我应该在angular ui或angular translate中将其作为bug/新功能来解决吗 其他组件也会出现相同的行为(例如警报) 更新1 注意:重新加载页面时,标签将以所
|translate
来处理平移。使用以下代码,pager
指令的previous text
和next text
不会在视图中更新,而所有其他标签在更改语言时都会正确更改
如何强制pager指令重新呈现与当前翻译相对应的内容?我应该在angular ui或angular translate中将其作为bug/新功能来解决吗
其他组件也会出现相同的行为(例如警报)
更新1
注意:重新加载页面时,标签将以所需语言正确显示!但是我想在不重新加载的情况下实现它。我在更新值方面也有类似的问题,并且发现使用“apply()”是有效的。也许试试这个
function ($translate, $scope) {
$scope.switchLang = function (lang) {
$scope.$apply(function() {
$translate.uses(lang);
});
};}]);
我在更新值时也遇到类似的问题,并发现使用“apply()”是有效的。也许试试这个
function ($translate, $scope) {
$scope.switchLang = function (lang) {
$scope.$apply(function() {
$translate.uses(lang);
});
};}]);
有趣!由于您使用的是过滤器,下一个$digest周期实际上应该会收集一些东西。显然是这样,否则在重新加载页面后,语言就不会改变
我想我们得看看这个角型用户界面寻呼机的引擎盖下面。也许寻呼机指令会缓存给定的标签?有趣!由于您使用的是过滤器,下一个$digest周期实际上应该会收集一些东西。显然是这样,否则在重新加载页面后,语言就不会改变
我想我们得看看这个角型用户界面寻呼机的引擎盖下面。也许寻呼机指令会缓存给定的标签?我还没有测试过它,但下面的代码似乎可以工作:
angular.module('myApp')
.controller('LanguageCtrl', ['$translate', '$scope',
function ($translate, $scope) {
$scope.switchLang = function (lang) {
$translate.uses(lang);
};
$scope.$on('$translateChangeSuccess', function () {
// this will be called after switching languages,
// so you could force a $scope.PREV here and
// change your HTML to use a variable.
// However, maybe just calling $translate will
// force your frontend to update
$translate('PREV');
$translate('NEXT');
});
}]);
我还没有对它进行测试,但以下几点似乎可以:
angular.module('myApp')
.controller('LanguageCtrl', ['$translate', '$scope',
function ($translate, $scope) {
$scope.switchLang = function (lang) {
$translate.uses(lang);
};
$scope.$on('$translateChangeSuccess', function () {
// this will be called after switching languages,
// so you could force a $scope.PREV here and
// change your HTML to use a variable.
// However, maybe just calling $translate will
// force your frontend to update
$translate('PREV');
$translate('NEXT');
});
}]);
我也有同样的问题,但我重新阅读了一遍,似乎一个
-text
属性标记为C
。从文件中
可以在固定服务中全局配置此设置
-text
属性看起来像一个常量。在page指令之外,我打印出{{'PREV'| translate}}
,它按预期工作,并挂起在pagination指令中。我认为在页面上强制重载对区域设置敏感的状态是一个不错的选择。我这样做,但你可以重写我的代码,使用主要思想
装饰师
$provide.decorator('$state', function($delegate, $stateParams) {
$delegate.forceReload = function() {
return $delegate.go($delegate.current, $stateParams, {
reload: true,
inherit: false,
notify: true
});
};
return $delegate;
});
使用
已更新
我发现只重新呈现分页指令而不刷新整个页面是一种欺骗。它对total items
属性敏感
var total = $scope.totalItems;
$scope.totalItems = 0
$scope.totalItems = total;
指令重新呈现,所有
-text
属性也使用新的本地化字符串重新呈现。我也有同样的问题,但我重新读取,似乎-text
属性标记为C
。从文件中
可以在固定服务中全局配置此设置
-text
属性看起来像一个常量。在page指令之外,我打印出{{'PREV'| translate}}
,它按预期工作,并挂起在pagination指令中。我认为在页面上强制重载对区域设置敏感的状态是一个不错的选择。我这样做,但你可以重写我的代码,使用主要思想
装饰师
$provide.decorator('$state', function($delegate, $stateParams) {
$delegate.forceReload = function() {
return $delegate.go($delegate.current, $stateParams, {
reload: true,
inherit: false,
notify: true
});
};
return $delegate;
});
使用
已更新
我发现只重新呈现分页指令而不刷新整个页面是一种欺骗。它对total items
属性敏感
var total = $scope.totalItems;
$scope.totalItems = 0
$scope.totalItems = total;
指令重新呈现,所有
-text
属性也使用新的本地化字符串重新呈现。谢谢,但这不起作用,因为它是通过ng click调用的。导致错误:error:[$rootScope:inprog]$apply已在进行中
如果应该显式调用apply,这可能会很有帮助:$timeout(function(){},1)
($timeout
隐式调用$apply
,但是,大多数情况下这只是肮脏的黑客攻击,没有解决原始问题。;)谢谢,但这不起作用,因为它是通过ng click调用的。导致错误:error:[$rootScope:inprog]$apply已经在进行中
如果应该显式调用apply,这可能会很有帮助:$timeout(function(){},1)
($timeout
隐式调用$apply
,但是,大多数情况下,这只是肮脏的黑客攻击,没有解决原始问题;)原因很简单,PREV
和NEXT
的翻译不可用。请验证翻译是否存在。谢谢,是的,它存在。当我完全重新加载页面时,可以看到正确的翻译。angular translate创建的问题您可以添加一个测试用例,plunkr或JSFIDLE吗?我建议组件本身不会收到语言更改的通知。原因可能很简单,如PREV
和NEXT
的翻译不可用。请验证翻译是否存在。谢谢,是的,它存在。当我完全重新加载页面时,可以看到正确的翻译。angular translate创建的问题您可以添加一个测试用例,plunkr或JSFIDLE吗?我建议组件本身不会收到语言更改的通知。它是关闭的,但在实际中,-text
属性像字符串常量一样工作,指令重新呈现使用实际数据刷新此值它是关闭的,但在实际中,-text
属性像字符串常量一样工作,指令重新呈现使用实际数据刷新此值翻译调用中不存在问题,请参阅我的应答问题不在翻译调用中,请参阅我的答案