我想知道是否可以连接几个$ scope来制作那个。
例如,原始范围的地址是:
$scope.templates.webapp.dc01[0].value
我想根据我的事件改变DC01我尝试了几件事是它不起作用。
我试过
ng-init="form.template = templates.webapp.{{building}}[0].value"
它不起作用。
我也尝试过这样:
$scope.test = $scope.templates.webapp + '.' + $scope.building + '[0].value';
ng-init="form.template = test"
效果不佳。
Plunk演示了这个问题:https://plnkr.co/edit/CaWNeIDHe2nFyEgDABvg?p=preview
答案 0 :(得分:0)
问题在于嵌套角度表达式。在提供的plunker你正在做:
data-ng-options="template.value as template.name for template in templates.webapp.{{building}}"
部分template.value as template.name
已经是一个表达式,{{building}}
是"嵌套"在里面。这些模式并不是一个好主意:))
您想要做的只是
data-ng-options="template.value as template.name for template in templates.webapp[building]"
就像你在普通JS中所做的那样。这种方式#s-template
中的可用选项会因所选建筑而发生变化。
您可以阅读有关角度表达式here
的更多信息要在选择构建时更改所选(默认)值,您应将逻辑从ng-init
移动到testBat
函数,并从控制器调用它(而不是执行$rootScope.building = "Dc01";
)。这样选择建筑物将始终从相应的列表中选择第一个值。