Javascript 指令Angularjs中未定义的值
我正在尝试使用来自ajax调用的数据创建一个指令,我的问题是在创建该指令时数据未定义,因为ajax仍在加载,我知道使用setTimeout来验证这一点,并使用$scope.apply()可以工作,但这似乎不是一个好方法,也尝试将$watch添加到标记ajaxLoading中,但它不起作用Javascript 指令Angularjs中未定义的值,javascript,ajax,angularjs,Javascript,Ajax,Angularjs,我正在尝试使用来自ajax调用的数据创建一个指令,我的问题是在创建该指令时数据未定义,因为ajax仍在加载,我知道使用setTimeout来验证这一点,并使用$scope.apply()可以工作,但这似乎不是一个好方法,也尝试将$watch添加到标记ajaxLoading中,但它不起作用 pmApp.directive("filter", function () { return { restrict: "A", scope: {
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);
}
}
});
无论您使用什么方法进行ajax调用,它都应该返回一个承诺。将此承诺保存在控制器上,并将其传递到指令作用域配置中,以便指令可以访问它 现在,您可以使用promise延迟变量赋值,而不是
setTimeout
但是作为一般建议,您应该使用内置的,而不是
setTimeout
,这样您就不必担心摘要周期了。有关详细信息,请访问。ajax调用在哪里?在ajax调用填充的数据对象上添加一个监视。由于您使用的是独立作用域,因此需要传递使用ajax填充的数据对象。@Chandermani如何传递数据对象?您已经在data
变量中传递了它。查看data
上的watch
是否在指令内工作。数据对象的结构是什么?