AngularJS指令';在父控制器之前/之后随机调用s控制器
(角度版本:1.3.8) 我在指令的控制器“随机”中的调用中遇到异常。当在父控制器之前调用指令的控制器,并且指令控制器中使用的父控制器范围变量尚未初始化时,会发生异常。然而,在“随机”的情况下,我的父控制器确实在我的指令的控制器之前被调用,因此作用域变量被初始化,调用工作并且不会引发异常。我有两个问题(我有下面的示例代码):AngularJS指令';在父控制器之前/之后随机调用s控制器,angularjs,angularjs-directive,Angularjs,Angularjs Directive,(角度版本:1.3.8) 我在指令的控制器“随机”中的调用中遇到异常。当在父控制器之前调用指令的控制器,并且指令控制器中使用的父控制器范围变量尚未初始化时,会发生异常。然而,在“随机”的情况下,我的父控制器确实在我的指令的控制器之前被调用,因此作用域变量被初始化,调用工作并且不会引发异常。我有两个问题(我有下面的示例代码): 为什么指令的控制器和父控制器之间的调用序列存在“随机性”?也就是说,为什么一个在另一个之前/之后被呼叫 我可以通过在HTML中稍作更改,并在HTML中的长度为1的数组上使用
- HTML代码段(指令名:“cf线程”):
最后一点注意:在非工作HTML场景中,我始终可以向指令控制器中的“$scope.thread”添加$watch。不用说,尽管它是有效的,但我希望在没有必要的情况下避免它,正如在HTML工作场景中看到的那样
我感谢你的想法和耐心 您是否尝试设置优先级?没有设置优先级。请注意,如前所述,这只需稍加修改即可,这就引出了我所问的问题。好的,然后设置优先级,使您的指令在父控制器之后呈现和调用<cf-thread thread = "o_conversationService.o_thread"></cf-thread>
<cf-thread ng-repeat="threadObject in o_conversationService.o_threadCollection.objectDict" thread="threadObject"></cf-thread>
threadDirectiveModule.directive('cfThread', ['$sce', function ($sce) { return { restrict: 'AEC', scope: { thread: '=' }, templateUrl: 'partials/directives/thread.html', controller: function ($scope) { //EXCEPTION!!! $scope.thread is null if parent controller //wasn't called first. var unsafeDirectLink = cf.Utilities.createExternalDirectLink($scope.thread.dataJSON.source.type, $scope.thread.dataJSON.source.user_id, $scope.thread.dataJSON.source.root_id) if (cf.Utilities.isDefined(unsafeDirectLink)) { $scope.thread.safeDirectLink = $sce.trustAsHtml(unsafeDirectLink); } else { $scope.thread.safeDirectLink = null; } } }; }]);