我有一个可以加星标的项目列表。悬停时会弹出存档、删除和星号按钮。但是,如果该项目已加星标,则星标不会淡出但仍可见。
我创建了一个指令“列表”来处理效果。
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}}