我正在尝试使用angular指令实现我自己的select元素,并面临一个困境,即在指令将为select构建标记时构建传递给select指令的对象。
由于角度文档中描述了控制器,它说控制器应该与其中的UI代码无关,所以它让我在html模板中编写对象:
<div ng-controller="ctrl">
<my-select items="[{name:'name1', value:'value1'},...,{name:'name(n)', value:'value(n)}]></my-select>
</div>
但是看一下结果,在controller.js文件中编写它会感觉好多了:
function ctrl($scope){
$scope.selectItems=[{name:'name1', value:'value1'},...,{name:'name(n)', value:'value(n)}];
}
并在标记中写下这样的内容:
<my-select items="selectItems"...></my-select>
什么是“角度方式”而不是做什么?
谢谢,
叶兰
答案 0 :(得分:0)
大多数选择选项都是模型的一部分而非视图的一部分,所以它们应该通过控制器传递。 唯一的例外是ui特定数据,这些数据不是动态的,出于实际原因可以硬编码到模板中。
但即使这样,模板也不应该被庞大的数据对象所混淆,这是不值得的。
指令应该作为可重用和可测试的组件实现,因此将应用程序特定数据放入其中是一个很大的错误。
对于快速原型制作和非常小的物体,你可以单程走。
如果你有1000个选项,你还会考虑在你的观点或指令中对它们进行硬编码吗?
使用控制器。可能你真正的应用程序数据应该保存在真实的服务器上。