使用范围变量在 select 上设置 ng-init
set ng-init on select with scope variable
我有一个指令,我正在尝试将 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
的字符串,但我可以直接使用它?
1) 您不应该使用 select as with track by,它们不是为协同工作而设计的。有关详细信息,请参阅文档。
2) 不要使用 ng-init 来初始化 属性,这应该在控制器上完成,不会监视 ng-inited 表达式,在 [=22= 上设置 $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}
我有一个指令,我正在尝试将 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
的字符串,但我可以直接使用它?
1) 您不应该使用 select as with track by,它们不是为协同工作而设计的。有关详细信息,请参阅文档。
2) 不要使用 ng-init 来初始化 属性,这应该在控制器上完成,不会监视 ng-inited 表达式,在 [=22= 上设置 $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}