【问题标题】:Directive code executes before controller code指令代码在控制器代码之前执行
【发布时间】:2013-08-27 02:59:06
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: javascript html angularjs angularjs-directive


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-05
      • 2010-12-16
      • 2022-08-03
      • 2019-06-19
      • 2015-01-03
      • 1970-01-01
      • 2016-12-25
      • 1970-01-01
      相关资源
      最近更新 更多