3

我有一个指令,我试图将其设置ng-init为一个变量集$scope

<select ng-init="safe.id=currentSafe" ng-options="safe as safe.name for safe in safes track by safe.id" ng-model="safe" ng-change="getSafeUrl(safe.id)"></select>

link指令的函数中,我有:

$scope.currentSafe = '72824ca7-99ab-4f16-a56c-3c98328c73fd';

这是行不通的。但是,如果我将模板更改为:

<select ng-init="safe.id='72824ca7-99ab-4f16-a56c-3c98328c73fd'" ng-options="safe as safe.name for safe in safes track by safe.id" ng-model="safe" ng-change="getSafeUrl(safe.id)"></select>

为什么我不能使用来自的字符串,$scope但我可以直接使用它?

4

1 回答 1

7

1)您不应该将select 与 track by一起使用,它们并非旨在一起工作。有关详细信息,请参阅文档。

2) 不要使用ng-init来初始化应该在控制器上完成的属性,不监视 ng-inited 表达式,$scope.safe.id在指令本身的链接/控制器功能上设置。在您的情况下,您可能正在currentSafe异步设置,但 ng-init 届时已经对其进行了评估。

<select ng-options="safe.name for safe in safes track by safe.id" 
        ng-model="safe" 
        ng-change="getSafeUrl(safe.id)"></select>

并设置:

$scope.safe = {id:whateverid}
于 2015-01-27T17:01:25.837 回答