Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在构建复杂的角度组件时,我应该使用属性还是转换?_Javascript_Angularjs - Fatal编程技术网

Javascript 在构建复杂的角度组件时,我应该使用属性还是转换?

Javascript 在构建复杂的角度组件时,我应该使用属性还是转换?,javascript,angularjs,Javascript,Angularjs,问题 我正在尝试建立一个非常复杂的角度组件,我不确定最好的方法是什么 如果我必须将我的组件描述为一个函数,那么主要参数将是: 生成元素列表的函数 呈现这些元素的模板(如果是a类型的元素,请使用模板a,依此类推) 可以应用于列表元素的可能操作的列表(带有一些用于显示它们的附加数据,如用于构建按钮的文本和图标) 因此,为了给您一个示例,我可能想创建一个包含以下参数的列表: 检索10个用户的函数 “用户”元素的模板 操作列表[{action:deleteUser,icon:deleteIconP

问题

我正在尝试建立一个非常复杂的角度组件,我不确定最好的方法是什么

如果我必须将我的组件描述为一个函数,那么主要参数将是:

  • 生成元素列表的函数
  • 呈现这些元素的模板(如果是a类型的元素,请使用模板a,依此类推)
  • 可以应用于列表元素的可能操作的列表(带有一些用于显示它们的附加数据,如用于构建按钮的文本和图标)
因此,为了给您一个示例,我可能想创建一个包含以下参数的列表:

  • 检索10个用户的函数
  • “用户”元素的模板
  • 操作列表[{action:deleteUser,icon:deleteIconPath,text:'delete'}]
我不确定这是否是最好的方法,但是组件应该能够自己处理元素列表,而不应该通过其容器接收它

可能的解决方案

1

第一个显而易见的解决方案是让容器管理元素列表(第一个参数),并排除元素模板和操作

<my-list>
    <elements>
        <div ng-repeat="elem in $ctrl.getData()>
            <element>
                <user e="elem"> </user>
            </element>
            <actions>
                <button action="$ctrl.delete(elem)>delete</button>
            </actions>
    <elements>
</my-list>

删除
2

一个完全不同的解决方案是将所有内容作为组件的属性传递

<my-list> 
    data-getter="$ctrl.getData" 
    template="user"
    actions="[{action: deleteUser, icon: deleteIconPath, text: 'delete'}]"
</my-list>

data getter=“$ctrl.getData”
template=“用户”
actions=“[{action:deleteUser,icon:deleteIconPath,text:'delete'}]
1对2比较

解决方案1对于angular来说似乎是非常标准的,但在我的例子中,它意味着大量的冗长和代码的重复,我不太喜欢它。解决方案2似乎完全不符合标准,我担心这可能会导致一些我现在无法预见的问题

看起来,flux所激发的“趋势”是让一些顶级组件管理所有数据,并让子组件通过单向数据绑定访问适当的数据。当然,仅仅因为这种架构风格很流行并不意味着它适合我,但我不想反对框架

问题

因此,主要问题是:

  • 子组件自己(当然是通过服务)获取数据可能会有问题吗
  • 我描述的第二个解决方案是不是以我现在无法发现的某种基本方式“错误”
  • 对于案例1,有没有一种方法可以让转置代码访问组件元素(我的意思是将ng repeat移动到组件内部,并让转置代码访问对ng repeat作用域的引用)
  • 你有没有其他的建议来建造这个东西

我对自行获取数据的子组件有一些问题。如果您使用组件3-4次,每个组件都将进行服务调用,如果您不缓存数据,则可能存在不一致性。也许你可以同时做这两件事,解决方案1使用解决方案2。因此,如果数据源发生变化,您可以使用解决方案2。我对自行获取数据的子组件有一些问题。如果您使用组件3-4次,每个组件都将进行服务调用,如果您不缓存数据,则可能存在不一致性。也许你可以同时做这两件事,解决方案1使用解决方案2。因此,如果数据源发生变化,您可以使用解决方案2。