这是我试图模仿的全局搜索功能:https://plnkr.co/edit/DRagFo?p=preview
这是我的尝试:https://plnkr.co/edit/n4aczq?p=preview
它们的写法略有不同,但我似乎无法弄清楚为什么全局搜索不起作用。我认为它与$scope.parsedEntries.push(parse(content));
中的script.js
:
angular.module('myApp', ['smart-table','lrDragNDrop'])
.controller('mainCtrl', ['$scope', '$timeout', '$http',
function ($scope, $timeout, $http) {
var url = 'https://spreadsheets.google.com/feeds/list/1O7M5gaEGlyE5gkOBARJrxJJMBYiTwz2THVjgbaTx9v8/od6/public/values?alt=json';
var parse = function (entry) {
console.log(entry);
var description = entry.gsx$description.$t;
var cause = entry.gsx$cause.$t;
return {
description: description,
cause: cause
};
};
$http.get(url)
.then(function (response) {
var entries = response.data.feed.entry;
$scope.parsedEntries = [];
for (var key in entries) {
var content = entries[key];
$scope.parsedEntries.push(parse(content));
}
});
}
]);
提前致谢。
答案 0 :(得分:1)
问题与您在script.js中填充parsedEntries
的方式无关。
它与指令st-table的过早初始化有关,它取决于parsedEntries
的值,它在开头是一个空引用,但后来在$http.get
之后填充。
在示例中一切正常,因为行数据全部可用于st-table uppfront。你可以说这是st-table的缺陷,但是一个小技巧可以帮助你。
您可以选择通过引入ng-if="ready"
或其他内容来推迟st-table的初始化。然后,在获取值后,仅在ready=true
中设置$http.get.then()
。
<div class="table-container" ng-if="ready">
和then() function
$http.get(url)
.then(function (response) {
var entries = response.data.feed.entry;
$scope.ready = true;//populate this ready
$scope.parsedEntries=[];
for (var key in entries) {
var content = entries[key];
$scope.parsedEntries.push(parse(content));
}
});
$ scope.parsedEntries = [];