指令代码在控制器代码之前执行

时间:2013-08-26 18:45:17

标签: javascript html angularjs angularjs-directive

我创建了一个像我这样使用的指令:

<div car-form car="car" on-submit="createCar(car)"></div>

我在我创建的新页面和编辑页面上使用指令。他们有自己的控制器。在EditCarController中,我从我创建的RESTful Web服务中检索汽车。我还为指令分配了一个控制器功能(在指令的配置对象中),我根据汽车等设置了一些类别......但是!

由于汽车是从页面控制器异步加载的,因此当指令控制器代码开始运行时,它并不总是(随机)加载。我该如何解决这个问题?我需要确保我传递给指令的汽车已加载。

1 个答案:

答案 0 :(得分:1)

您可以在指令的控制器中使用$watch来了解数据何时从服务器返回。像这样:

$scope.$watch("car", function(newVal) {
    if (angular.isDefined(newVal)
    {
         //get stuff based on car (newVal)
    }
});

$watch将传入undefined,直到数据从服务器返回,此时您可以对对象执行任何操作