(对不起我的英语不好 :)
我在我的表单中使用Select2和 AngularUI ui-select2 指令,如下所示:
<input ng-model="city" type="text" ui-select2="setupCitySelect" />
其中 setupCitySelect - 带有 select2 选项的对象。我将他设置在适当的范围内
$scope.setupCitySelect = {
allowClear: true,
minimumInputLength: 2
...etc, about 50 SLOC
}
一切正常。但是当我们在页面(或页面的一部分)上有五个 select2 元素时——CitySelect、UserSelect、ConditionSelect 等,我们会得到大量代码,其中大部分是相同的。AngularUI 提供“全局默认值”。所以我们可以移动重复代码(在指令中):
var dirs = angular.module('vipc.directives', ['ui']);
// defaults setting for UI
dirs.value('ui.config', {
select2: {
allowClear: true,
minimumInputLength: 2,
formatInputTooShort: function(term, minLenght) {
var rest = minLenght - term.length;
return "minimum: "+rest;
},
...etc.
但是我们仍然需要在控制器中进行一些工作:设置独特的属性,例如 ajax-url ......而且它出现在几个页面上,几个控制器。啊……是的,我可以把它放到一个文件中,比如说 common.js。但我认为 - 这不是最好的方式。安古拉斯说:“使用指令,卢克!”。但是怎么做?太复杂的文档。我阅读了文档。三次。没有成功。我写了一些简单的目录,但是这个......它应该具有“隔离”范围 - 可以是页面上的 2 CitySelect - 在上面的搜索表单和模态表单中。编译功能?链接功能?
我所需要的只是
<myapp-city-select id="city"></myapp-city-select>
<myapp-user-select></myapp-city-select>
...later, same html file
<myapp-city-select id="city2"></myapp-city-select>
有人可以帮忙吗?