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
Angularjs-向select clobbers和ng选项添加属性指令_Select_Angularjs_Directive - Fatal编程技术网

Angularjs-向select clobbers和ng选项添加属性指令

Angularjs-向select clobbers和ng选项添加属性指令,select,angularjs,directive,Select,Angularjs,Directive,我正在尝试向使用ng选项的select添加属性指令: <select ng-model="item.Subcategory" ng-options="subcategory.Name as subcategory.Name for subcategory in GetSubcategories(item.Category)" monitor></select> 指令它似乎在工作,因为我看到每个使用该指令的项目都有一个“我存在”,但它选择丢失了它的选项 有了该指令,我可以

我正在尝试向使用ng选项的select添加属性指令:

<select ng-model="item.Subcategory" ng-options="subcategory.Name as subcategory.Name for subcategory in GetSubcategories(item.Category)" monitor></select>
指令它似乎在工作,因为我看到每个使用该指令的项目都有一个“我存在”,但它选择丢失了它的选项

有了该指令,我可以在HTML中看到这是select的唯一选项:

<option value="?" selected="selected"></option>

与此相反,当不使用指令时:

<option value="0" selected="selected">Cats</option>
<option value="1">Dogs</option>
猫 狗 为什么我的指令会破坏ng选项


谢谢。

这里可能有几个问题,其中任何一个都可能是问题的原因

根据报告:

如果同一元素上的多个指令请求一个新范围,则只创建一个新范围

您正在指令上创建一个新的隔离作用域,该作用域可能会覆盖其他指令的作用域,包括ng选项

另外,您应该记住,controller参数创建了一个与其他指令共享的新控制器:

控制器构造函数。控制器在预链接阶段之前实例化,并与其他指令共享(请参见require属性)。这允许指令彼此通信并增强彼此的行为

除非您希望使用您的指令与其他指令共享数据,否则您可能应该避免创建控制器


您的指令无法在简单的链接函数中完成它需要完成的任务,有什么原因吗?

您是否看到任何错误?我认为ng选项也需要独立的作用域(每个元素只能有一个),没有错误。ng选项在没有my指令的情况下可以正常工作。指令中控制器的可能副本不仅仅用于与其他指令共享数据。它们的功能与常规应用程序控制器几乎相同:为指令提供行为。根据定义,link函数是应该进行DOM操作的地方。
<option value="0" selected="selected">Cats</option>
<option value="1">Dogs</option>