我有一个UI组件,我试图通过支持两种不同的数据格式来保持灵活性。
我想有条件地选择哪个范围属性与ng-model
元素的input
配对。
此代码不起作用,但它表达了我的意图:
<input type="text"
ng-model="treeNode.attachedEntity.name || treeNode.name"
/>
以下代码有效,但重复很多(此示例很简单,但在实际应用程序中,此输入附加了很多行为)
<!-- Rename File -->
<input ng-if="!treeNode.attachedEntity"
ng-model="treeNode.name"
type="text"/>
<!-- Rename Folder -->
<input ng-if="treeNode.attachedEntity"
ng-model="treeNode.attachedEntity.name"
type="text"/>
背景,如果它有帮助:这个模型类似于文件系统,其中对象附加到表示文件夹结构的treeNode。没有附加对象的treeNode是一个文件夹。我想要一个重命名操作,决定是否重命名文件夹或文件,具体取决于它正在操作的对象。
我可以用任何方式构建它,以便模板代码更简单吗?扩展ng-model的指令?我不知道的ng-model选项?控制器中的getter函数返回正确的模型?
谢谢!
答案 0 :(得分:3)
是的,吸气剂将成为我认为类似
的方式ng-model="getModel(param)[property]"
其中getModel将返回对您想要观察的对象的引用,缺点是您必须返回对象引用而不是属性以保留链接。
像http://jsfiddle.net/NhPEN/之类的东西可以说明我的观点。非常简单,没有意义,但演示了如何使用函数检索对象并使用其属性作为模型,您可以使用其他函数生成属性名称并使其完全动态