我该如何实现角度选择指令?

时间:2014-01-06 14:58:02

标签: javascript angularjs select angularjs-directive

我正在尝试使用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>

什么是“角度方式”而不是做什么?

谢谢,

叶兰

1 个答案:

答案 0 :(得分:0)

也许在视图(模板)中?

大多数选择选项都是模型的一部分而非视图的一部分,所以它们应该通过控制器传递。 唯一的例外是ui特定数据,这些数据不是动态的,出于实际原因可以硬编码到模板中。

但即使这样,模板也不应该被庞大的数据对象所混淆,这是不值得的。

也许在指令内?

指令应该作为可重用和可测试的组件实现,因此将应用程序特定数据放入其中是一个很大的错误。

快速原型设计?

对于快速原型制作和非常小的物体,你可以单程走。

结论

如果你有1000个选项,你还会考虑在你的观点或指令中对它们进行硬编码吗?

使用控制器。可能你真正的应用程序数据应该保存在真实的服务器上。