我是Angular和Kendo的新手,我的情况就像编辑中的按钮必须在查询屏幕中为其他用户消失,它应该仅为查询的所有者显示。
现在它消失了一段时间后说一分钟,为什么会出现这种滞后? 对此有任何帮助对我很有帮助....
在分析中,确定了以下几点: - ng-show中调用的函数不会立即触发,其中ng-show包含在模板中,然后通过为ng-show指定常量值来检查仍然存在触发ng-show的延迟。但是固定样式正常工作示例style = display:none .. - 然后我发现在渲染kendoui网格行模板后没有立即调用angularjs指令,调用angularjs指令有一些延迟
代码:
$scope.showButton = function(userId){
if($scope.loggedInUserId == userId)
{
return true;
}
else
{
return false;
}
};
$scope.model.columns = [
{ field: "name",title:"Name", width: 300},
{ field: "userId",title:"User Id", width: 100},
{ field: "lastModified",title:"Last Modified Date", width: 200},
{ field: "visibility",title:"Visibility", width: 100},
{ template: "<img title='Edit' src='content/images/glacier/2.0.1/generic/normal/png21/d_040_edit_normal.png' onmouseover=\"this.src='content/images/glacier/2.0.1/generic/active/png21/d_040_edit_active.png'\" onmouseout=\"this.src='content/images/glacier/2.0.1/generic/normal/png21/d_040_edit_normal.png'\" ng-click='viewQuery(#=id#);disableSave(\"#=userId#\")' alt='Edit'><img title='Make Public' src='content/images/glacier/2.0.1/generic/normal/png21/d_150_team_normal.png' onmouseover=\"this.src='content/images/glacier/2.0.1/generic/active/png21/d_150_team_active.png'\" onmouseout=\"this.src='content/images/glacier/2.0.1/generic/normal/png21/d_150_team_normal.png'\" ng-click='makePublic(#=id#)' ng-show='showButton(\"#=userId#\")' alt='Public'><img title='Make Private' src='content/images/glacier/2.0.1/generic/normal/png21/d_118_user_normal.png' onmouseover=\"this.src='content/images/glacier/2.0.1/generic/active/png21/d_118_user_active.png'\" onmouseout=\"this.src='content/images/glacier/2.0.1/generic/normal/png21/d_118_user_normal.png'\" ng-click='makePrivate(#=id#)' ng-show='showButton(\"#=userId#\")' alt='Private'><img title='Delete' src='content/images/glacier/2.0.1/generic/normal/png21/d_030_delete_normal.png' onmouseover=\"this.src='content/images/glacier/2.0.1/generic/active/png21/d_030_delete_active.png'\" onmouseout=\"this.src='content/images/glacier/2.0.1/generic/normal/png21/d_030_delete_normal.png'\" ng-click='deleteQuery(#=id#)\' ng-show='showButton(\"#=userId#\")' alt='Delete'>", title: "Operations" },
];
$scope.model.gridOpts = {
columns: $scope.model.columns,
filterable: { extra: false },
scrollable: true,
height: "230%",
pageable: true,
batch: false,
reorderable: true,
sortable: true,
editable: "inline",
};
答案 0 :(得分:1)
如果没有JSFiddle进行分析,就很难确定问题。但我会提供一种可以至少进行调查的可能解决方案。
Angular只能在其后隐藏这些按钮,依赖于它的所有内容已经启动。这意味着下载角度代码,等待加载其他所有内容,解析HTML,解析任何数据依赖关系等等。此时它将对DOM进行修改(当你的按钮隐藏时)。
有几种方法可以解决这个问题,使用ng-cloak,在屏幕上没有显示任何内容,直到它被适当修改,或者隐藏所有可选控件并显示用户之后可以访问的内容角载荷。
这是我刚刚在项目中使用的一个选项。在您的条目文件的顶部添加此代码(如index.html,default.html,等等):
.ng-hide {
display: none !important;
}
现在将ng-hide类应用于您不想显示的任何按钮,直到您知道他们有权访问这些按钮。
将它放在默认文件的顶部,它根本不会显示,直到它被告知。如果将它放在.css文件中,那么它有时会短暂显示,直到加载,解析和应用.css文件为止。
另一个选择是查看ng-cloak。您可以在此处试用:http://plnkr.co/edit/?p=preview
我相信你说过它超过60秒的事实让我相信它可能正在等待所需的数据才能获得resolved才能分析权限。
如果你不了解resolve语句在路由中的工作原理,你可以在这里阅读: http://www.undefinednull.com/2014/02/17/resolve-in-angularjs-routes-explained-as-story/
我不确定这是否能解决您的问题,但是一旦您可以创建一个jsfiddle,那么您将有更多人跳进去回答这个问题。