我有一个可以加星标的项目列表。悬停时用于存档,删除和星形弹出的按钮。但是,如果该项目已加星标,则该星形不会淡出但仍然可见。
我已经创建了一个指令'list'来处理效果。
app.directive "list",() ->
restrict: 'A'
link: (scope, element, attrs) ->
selected = false
element.on 'mouseenter', ->
$ element.find(".sub-menu > label, .sub-menu > a").show()
element.on 'mouseleave', ->
if attrs['list'] is "true"
$ element.find(".sub-menu > .ng-archive, .sub-menu > a").hide()
else
$ element.find(".sub-menu > label, .sub-menu > a").hide()
element.on 'click', ->
selected =! selected
if selected then element.addClass 'list-selected' else element.removeClass 'list-selected'
console.log scope
# I want to execute the following statement when initializing
if attrs['list'] is "true"
$ element.find(".sub-menu > .ng-archive, .sub-menu > a").hide()
else
$ element.find(".sub-menu > label, .sub-menu > a").hide()
实际的li元素
<li ng-repeat="item in items" list="{{item.starred}}">
问题在于,如果某个项目已加星标,则在我将鼠标悬停在元素上而不是数据本身初始化之前,红色星号不会显示。在那之后,一切正常。
在初始化时,list属性似乎没有从{{item.starred}}
获取值。当我将值输出到控制台时,我得到了undefined
。只有当我将鼠标悬停在元素上时,才会使用{{item.starred}}
答案 0 :(得分:0)
您是否从服务器获取item.starred
值?如果是这样,那么期望获得undefined
,因为该指令在从服务器返回的数据之前被初始化。
我建议使用CSS来显示红星,而不是使用javascript hide
和show
事件。或者,您可以使用角度watch
来观察Item
值的更改并运行javascript代码。