Javascript 我可以将变量控制器函数传递给指令中的函数链接吗?
我在angularjs上使用一个自定义指令,我想将一些变量传递给该指令,以便使用设置的数据构建该指令,数据从$http响应中获取,但这需要很长的时间,当变量填充了数据响应时,什么都不会发生 我认为如果我可以在指令中的控制器函数中发出请求,也许我可以设置$timeout函数,直到响应结束,但问题是如果我在$http响应中获取数据并用该数据填充变量,我可以将其传递给link函数Javascript 我可以将变量控制器函数传递给指令中的函数链接吗?,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,我在angularjs上使用一个自定义指令,我想将一些变量传递给该指令,以便使用设置的数据构建该指令,数据从$http响应中获取,但这需要很长的时间,当变量填充了数据响应时,什么都不会发生 我认为如果我可以在指令中的控制器函数中发出请求,也许我可以设置$timeout函数,直到响应结束,但问题是如果我在$http响应中获取数据并用该数据填充变量,我可以将其传递给link函数 编辑:最终结果是表单中的一组字段,从json对象以动态方式填充。通常,如果您有一些信息要与自定义指令共享,可以手动或使用属
编辑:最终结果是表单中的一组字段,从json对象以动态方式填充。通常,如果您有一些信息要与自定义指令共享,可以手动或使用属性来完成。 假设我有一个自定义指令来显示关于
小部件的一些细节,但我希望它是通用的。。。然后我可以这样写我的指令:
{
restrict: 'E',
template: '<div>{{widget.name}}</div>',
scope: {
widget:'=' //Allows two way binding with parent scope
}
}
link: function(scope, elem, attrs){
scope.$watch(function () { return scope.widget; }, function(newVal, oldVal){
scope.widget = newVal;
}, true);
}
当您必须监视对象(深度监视)时,您可以这样声明您的手表:
{
restrict: 'E',
template: '<div>{{widget.name}}</div>',
scope: {
widget:'=' //Allows two way binding with parent scope
}
}
link: function(scope, elem, attrs){
scope.$watch(function () { return scope.widget; }, function(newVal, oldVal){
scope.widget = newVal;
}, true);
}
请注意返回对象的函数,以及添加到手表末尾的true。要将任何内容传递给指令,您可以使用服务。此外,您还可以使用承诺等待来自HTTP请求的数据。此外,若你们并没有具体的代码要讨论,那个么这一切都只是挥手而已。最好在指令中指定你们想要构建什么,以寻求合适的解决方案answer@DanielA.White是的,但我在一个孤立的范围内,当我试图调试在范围中定义的变量时,我只看到在指令范围中定义的变量。@akonsu请提供我可以用来调试的任何引用。@RubénGalvan好的,这是一个服务文档页:,这是一个承诺文档页:谢谢@Josh,但是,在某种程度上,当我设置一个变量(js对象)以进行单独监视时,请求需要很长时间,并且无法正常工作:(@RubénGalvan-还有更多的细节吗?我可以编写一个工作代码片段来演示这是如何工作的。检索数据所需的时间应该无关紧要。是的,基本上我从wcf服务中获得了一个json字符串,我在用请求填充的变量上放置了一个监视程序,但当这种情况发生时,函数我的指令中的n link已经被触发,当变量被信息请求填充时,观察者不会刷新,如果我清楚这一点,我不知道,但提前感谢@Josh