【发布时间】:2014-01-24 00:26:23
【问题描述】:
我正在尝试使用 angular 指令实现我自己的选择元素,并面临两难境地,在哪里构建传递给选择指令的对象,该指令将为选择构建标记。
正如角度文档中描述的控制器,它说控制器应该与其中的 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>
什么是“Angular Way”而不是这样做?
谢谢,
伊兰
【问题讨论】:
-
“正如角度文档中描述的控制器,它说指令应该与 UI 代码无关”。这是错误的。控制器应该与 UI 代码无关,但指令应该与 UI 代码有关。
-
@jonas 感谢您的更正,你说得对,我的意思是控制器,但写了指令,修复了它。
-
@IlanFrumer 我认为指令实际上是 Angular 中最难测试的结构?
-
我不会以这种态度在生产中使用您的指令。它们难以测试的唯一原因是它们进行 dom 操作并使用 jquery 插件扩展。
标签: javascript angularjs select angularjs-directive