angularjs - "AngularJS way"映射 View 中的输出值

标签 angularjs dry angularjs-view

我正在寻求有关 AngularJS 初学者问题的建议:

我的应用程序有很多情况,它使用的 API 从可能类型的列表中给出一个值,我已经将值拉入我的模型,然后我想将它映射到某些东西,例如每种类型的图标。
由于我可能会经常重复使用其中一些常见类型的映射,那么有什么好方法可以高效并允许重复使用呢?


我试图保持“干燥”并坚持“关注点分离”,因此显示逻辑尽可能与模型分离。

我知道“好”是主观的,但希望人们在这里得到这个想法......

在我看来,这是一个相当普遍的场景,但一些切实的例子是:

一世。 处理文件,我得到文件类型,我想映射它,以便显示基于类型的特定图片。在处理文件的应用程序中,这可能会出现在很多地方。

ii. 天气应用程序 - 会被告知天气类型,然后希望显示特定的天气图标(再次在整个应用程序的许多地方)

我对 AngularJS 还是很陌生,但我已经阅读了一些问题,但我不确定如何最好地解决问题的可能方法 - 我猜它可能是:

一种。 制作我自己的过滤器,以便我可以在我放置模型值的表达式中的不同位置重复使用它

制定我自己的指令(对此不太清楚,但我的理解是我可以为特定目的制定指令,例如,如果我希望我的“类型”代表诸如“星星”计数器之类的东西并输入一个值,例如3 导致它显示 3 颗星等)

关于在哪里可以找到好的示例代码的任何建议或建议?

非常感谢,

尼尔

最佳答案

模型到图标/图像是相当简单的方式,假设您有一个文件列表

$scope.files=[
    {
        name:"file name",
        type:'pdf'
    },
    {
        name:"file name2",
        type:'doc'
    }
]

那么假设你有一个文件列表

{{文档名称}}


那么你会有一个 css 说明:
.icon-file{
    width:20px;
    height:20px;
    display:inlie-block;
    background-repeat:no-repeat;
    background-position:center center;
}

.icon-file.pdf{
    background-image:url('path/to/pdf.png');
 }

.icon-file.doc{
    background-image:url('path/to/doc.png');
 }

作为指令,没有孤立的作用域
 angularApp.directive('file',function(){
     return {
           restrict:'AE',
           replace:false,
           template:'<i class="icon-file"></i><span></span>',
           link:function(scope,element,attrs){
                  element.find('li').addClass(attrs.type);
                  element.find('span').text(attrs.name);
            }
      }
 })

作为指令,具有隔离范围
 angularApp.directive('file',function(){
     return {
           restrict:'AE',
           replace:false,
           scope:{
                type:"@type",
                name:"@name"
            },
           template:'<i class="icon-file {{type}}"></i><span>{{name}}</span>',

      }
 })

指令用法
 <file_type name="file_name" type="type"></file_type>

关于angularjs - "AngularJS way"映射 View 中的输出值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23923260/

相关文章:

javascript - 重新调用 Controller 时丢失表单输入数据

javascript - 在组织 AngularJS 应用程序时,您的模块是否都应该具有相同的名称?

javascript - 异步流程图。如何直观地表示异步逻辑

angularjs - Angular,从函数输出到表达式

php - AngularJS 在 http 之后在 ng-repeat 中更新单个模型

django - DRY django 模型,创建对象列表

c# - 将不同的实现注入(inject)同一接口(interface),然后在正确的项目/程序集中选择正确的实现

java - 我的 Wicket 验证规则能否以 DRY 方式记录给用户?