我有一个指令,它有一个对endpoint进行$超文本传输协议调用的控制器。我想获取服务器调用的结果,然后将它们显示在我的模板中。如果我的模板中有一个值,然后显式设置它,它就可以正常工作。如果我尝试将模板绑定到服务器调用,则会出现上面提到的错误。我需要使用$compile服务才能正常工作吗?
提前致谢
编译的最终结果
function mydirective(myservice,$compile) {
return {
restrict: 'ACE',
scope: {
url: '=',
title: '=',
},
controllerAs: 'ctrl',
bindToController: true,
controller: ['$scope', function($scope) {
myservice.init('http://jsonplaceholder.typicode.com/posts')
.then(function(data) {
$scope.postRequest(data);
});
$scope.postRequest = function(val) {
this.items = val;
this.title = val[0].title;
};
}],
link: function ($scope, $el, $attr ) {
var template = '<div class=\"test\">{{this.title}}</div>' +
'<div class=\"tes\" ng-repeat=\"item in this.items\">'+
'<div class=\"test1\">{{item.title}}</div>'+
'</div>';
var e = $compile(template)($scope);
$el.after(e);
}
};
}
下面是指令的重构版本。由于您使用的是控制器 As
,因此可以完全删除对$scope
的引用。此外,还会创建一个变量 ctrl
作为控制器的别名,以便从回调函数内部一致地访问控制器。最后,删除了链接
函数,并且模板
已调整为引用 ctrl
而不是此。
错误
RangeError:超出最大调用堆栈大小
是在模板中使用< code>this的结果,它指的是DOM而不是控制器,与< code>$compile结合使用,实质上是将DOM编译成它自己。
function mydirective(myservice, $compile) {
return {
restrict: 'ACE',
scope: {
url: '=',
title: '=',
},
controllerAs: 'ctrl',
bindToController: true,
controller: function() {
var ctrl = this; //alias reference for use inside controller callbacks
myservice.init('http://jsonplaceholder.typicode.com/posts')
.then(function(data) {
ctrl.postRequest(data);
});
ctrl.postRequest = function(val) {
ctrl.items = val;
ctrl.title = val[0].title;
};
},
template: '<div class=\"test\">{{ctrl.title}}</div>' +
'<div class=\"tes\" ng-repeat=\"item in ctrl.items\">' +
'<div class=\"test1\">{{item.title}}</div>' +
'</div>'
};
}
我刚刚开始使用角度2。所以我尝试使用Web服务从数据库显示类别。 这是我的论坛.服务.ts文件 forum.component.ts: forum.component.html: 请帮忙,先谢了
我使用https://formidable.com/open-source/urql/用于从React Native中的GraphQL服务器获取数据。 该组件的实现方式如下: 运行应用程序时,查询按预期工作,我从GraphQL服务器接收数据。 但是,控制台会显示错误消息: 未处理的promise拒绝,[RangeError:超出最大调用堆栈大小。]在node_modules/core-js/内部/
如果我运行此代码,我会收到错误RangeError:超出最大调用堆栈大小。但为什么呢?当我用9调用它时就发生了,斐波那契在这么小的数字下应该不是问题。
索引.js Questionlist.jsx 问题.jsx Scorebox.jsx 结果. jsx
我在react中工作,基本上我想做一个带工具提示的按钮,现在我正在做工具提示。我正在更改css显示属性,以使它在鼠标进入和离开时可见或不可见。但是有一个错误,我不知道该怎么办... 这是我的代码: 在控制台中,我收到了这个错误: 我找不到问题出在哪里。我知道这可能是关于调用一个函数,而这个函数又调用另一个函数。但是我在代码中看不到这样的东西,我不确定是否都是这样。谢谢帮助:)
问题内容: 我正在使用Direct Web Remoting(DWR)JavaScript库文件,并且仅在Safari(台式机和iPad)中出现错误 它说 超出最大呼叫堆栈大小。 该错误的确切含义是什么,它会完全停止处理吗? 也适用于浏览器的所有修复程序(实际上在上, JS:执行超出超时 我假设是相同的调用堆栈问题) 问题答案: 这意味着在代码的某处,你正在调用一个函数,该函数又调用另一个函数,依