在http调用将
jquery工作正常,但我无法在渲染屏幕后运行指令(它只是在之前运行,因此范围是空的)
我尝试过使用$ emit和$ broadcast demo,但仍然无法启动它。
范围将
<div wss-pager class="holder"></div>
<ul id="itemContainer" ng-bind-html="ctData"></ul>
////
function loadData() {
$http({
method: 'GET',
url: 'api/getMyData',
}).
success(function(data, status, headers, config) {
// deferred.resolve(data);
$scope.ctData = data.m_StringValue;
//
$scope.$emit('UpdateJPages');
}).
error(function(data, status, headers, config) {
alert("error" + data);
$scope.ctData= "";
});
};
/////////
angular.module('app').directive("wssPager", [function () {
return {
restrict: "A",
link: function (scope, elem, attrs) {
scope.$on('UpdateJPages', function() {
$("div.holder").jPages({
containerID: "itemContainer",
perPage: 5,
startPage: 1,
startRange: 1,
midRange: 5,
endRange: 1
});
});
答案 0 :(得分:5)
使用ng-if
如果在此调用之前cData为空,请使用如下:
<div wss-pager class="holder" ng-if="ctData"></div>
如果没有,你可以有一个额外的变量,例如loaded
<div wss-pager class="holder" ng-if="loaded"></div>
function loadData() {
$scope.loaded = false;
$http({
method: 'GET',
url: 'api/getMyData'
})
.success(function(data, status, headers, config) {
// deferred.resolve(data);
$scope.ctData = data.m_StringValue;
$scope.loaded = true
$scope.$emit('UpdateJPages');
})
.error(function(data, status, headers, config) {
alert('error' + data);
$scope.ctData= '';
});
};
答案 1 :(得分:1)
好的,我找到了感兴趣的人的工作。可能不是最好的答案,但它解决了这个问题。
我使用了$ timeout函数来启用屏幕渲染。
$timeout(function () {
$scope.$emit('UpdateJPages');
});