指令Angularjs中的未定义值

时间:2013-11-29 12:42:09

标签: javascript ajax angularjs

我正在尝试使用来自ajax调用的数据创建一个指令,我的问题是创建指令时数据是未定义的,因为ajax仍在加载,我知道使用setTimeout验证这一点并使用$ scope.apply ()它可能是有效的,但它似乎不是一个好方法,也尝试添加$ watch来标记ajaxLoading,但它不起作用。

pmApp.directive("filter", function () {
    return {
        restrict: "A",
        scope: {
            data: '=',
            ngModel: '=',
            display: '='
        },
        templateUrl: "views/template.html",
        link: function (scope, element, attrs) {
            var value = attrs.value,
                scopeParent = scope.$parent,
                model = attrs.ngModel;

            scope.description = attrs.description;
            scope.value = value;

            window.setTimeout(function() {
                scope.ngModel = scope.data[0][value];
                scope.$apply();
            }, 2000);


        }
    }
});

1 个答案:

答案 0 :(得分:0)

无论你使用哪种方法进行ajax调用,都应该返回一个promise。将此承诺保存在控制器上并将其传递给指令范围配置,以便指令可以访问它。

现在,您可以使用承诺来延迟变量分配,而不是setTimeout

但作为一般建议,您应该使用内置$timeout Service而不是setTimeout,因此您不必担心摘要周期。有关详细信息,请访问https://coderwall.com/p/udpmtq