作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 $http.get 从我的 Controller 中的 API 提取了一些数据,然后我想对该文本应用文本格式过滤器以使其美观。
但是我得到了
TypeError: Cannot read property 'split' of undefined
在我的控制台上。
代码如下:
Controller $http 获取:
$http.get("url to my api data")
.success(function (data, status, headers, config) {
$scope.serviceStatus = data;
})
.error(function () {
});
模块内过滤:
app.filter('textFormat', function() {
function format(input) {
// Call the passed in endpoint and at any capitalised letters, split it to have a space between words
input = input.split(/(?=[A-Z])/).join(" ");
// Get the character at index 0 and modify it to be uppercase. Then append the rest of the split string to the end
input = input.charAt(0).toUpperCase() + input.slice(1);
return input;
};
format.$stateful = true;
return format;
});
HTML:
<div ng-repeat="services in serviceStatus">
<p>The {{ services.service | textFormat }} is {{ services.status | textFormat }}</p>
</div>
最佳答案
您遇到此问题是因为 $http
是一个 async
调用。它避免了正常的执行流程。您应该将过滤器代码更改为以下一个
app.filter('textFormat', function() {
function format(input) {
if(input) { // Check if the value has been initialized
// Call the passed in endpoint and at any capitalised letters, split it to have a space between words
input = input.split(/(?=[A-Z])/).join(" ");
// Get the character at index 0 and modify it to be uppercase. Then append the rest of the split string to the end
input = input.charAt(0).toUpperCase() + input.slice(1);
return input;
}
};
format.$stateful = true; // You can put these two lines in above code as well.
return format;
});
关于javascript - Angular : can't apply a filter to data loaded via $http,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34087266/
我是一名优秀的程序员,十分优秀!