Jon*_*ing 3 angularjs angularjs-ng-init
我有一个指令,我试图将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>
Run Code Online (Sandbox Code Playgroud)
在link我的指令函数中:
$scope.currentSafe = '72824ca7-99ab-4f16-a56c-3c98328c73fd';
Run Code Online (Sandbox Code Playgroud)
这不起作用.但是,如果我将模板更改为:
<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>
Run Code Online (Sandbox Code Playgroud)
为什么我不能使用字符串,$scope但我可以直接使用它?
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>
Run Code Online (Sandbox Code Playgroud)
并设置:
$scope.safe = {id:whateverid}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3333 次 |
| 最近记录: |