Angularjs连接$ scope

时间:2016-08-20 23:13:32

标签: javascript angularjs angularjs-scope

我想知道是否可以连接几个$ 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

1 个答案:

答案 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";)。这样选择建筑物将始终从相应的列表中选择第一个值。

示例:https://plnkr.co/edit/Ggv9DSSLtK3TKvKScZgl?p=preview