javascript - AngularJS $范围

标签 javascript angularjs performance scope

我目前正在构建一个多语言 AngularJS 应用程序。我的所有数据都是从 api 检索的,它返回正确的语言。问题是。目前,我正在为应用程序中的每个按钮、所有内容使用 $scope 。这是最好的方法还是有办法直接从 View 调用它。

例如:

{{datakey.get.test}}

一些应用程序特定信息:

我从 api 获取一次数据(加载应用程序时)。作为 $http,我当前检索数据,然后对于每个范围我执行以下操作:

例如选择按钮:

$scope.selectButton = resourceKey.filter(function (item) {
    return item.name === prefix + "select-button"
})[0].value;

然后在 View 中我调用 {{selectButton}}

但问题是。我的 Controller 目前收到了这些类似于 $scope 的垃圾邮件。

这可以更有效地完成吗?

最佳答案

如果 key 全部已知并从 API 检索,您可以编写一条指令来为您进行替换,而不必使您的范围变得困惑。作为练习,我未实现变量参数替换(例如“您已选择 {0} 项”中的 {0})...无论如何,当值是静态/非静态时,您应该避免监视改变。

angular.module('myApp', [])

// Mocking these out, assuming they would come from API and be set in
// key: value manner
.value('localeKeys', {
    'datakey.get.test': 'Testing 1',
    'datakey.select-button': 'Select'
})

// Simple lookup
.directive('appTranslate', function (localeKeys) {
    return {
        restrict: 'AE',
        link: function (scope, elem, attrs) {
            var attr = attrs.appTranslate,
            	translated = localeKeys[attr] || attr || '';
            
            elem.html(translated);
        }
    };
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myApp">
    <h3 app-translate="datakey.get.test"></h3>
    <button type="button" app-translate="datakey.select-button"></button>
</div>

上面的示例只是在 localeKeys 中查找提供给指令的值。您可以将这些 localeKey 与从 API 检索到的值交换。

关于javascript - AngularJS $范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33484292/

相关文章:

javascript - 使用 Angular 工厂来保存应用程序其余部分访问的值,以最大限度地减少服务器调用

c++ - 为什么这个 += 循环比等价的 = 循环更快?

smtp - 在 Java Web 应用程序中使用 gmail 作为 SMTP 服务器很慢

javascript - 使用正则表达式查找整个句子

javascript - 递归求和 JavaScript 多维数组

javascript - 使用 Soundcloud API 流式传输特定歌曲

javascript - 无法在指令 angularjs 中从 firebase 获取数据

javascript - React Chart.js onClick 自定义图例

javascript - 如何重新创建 json 对象

javascript - Array.prototype 与 [] perf