2013-11-26 5 views
0

У меня есть «видимости» директива, определенная следующим образом:Невозможно получить доступ к идентификатору директивы

<span id="visibilityFor{{post.metaData.assetId}}" visibility></span> 

и соответствующий код директивы в JS является

myAppModule.directive("visibility", function ($compile, $http) { 
return { 
    scope: { 
     id:"=" 
    }, 
    link: function ($scope, element, attrs) { 
     element.bind('mouseover', function() { 
      alert("hi"); 

     }); 
    } 
    } 
}); 

Я пытаюсь получить доступ к Ид 'диапазона в модели. Но я понимаю это как неопределенное. Что может быть причиной этого?

ответ

1

С = вы хотите получить ссылку на объект, определенный в родительской области, но ваш id, вероятно, является просто строкой. Если вы хотите рассматривать значение как строку, используйте @ вместо =. Как здесь:

scope: { 
    id:"@" 
}, 
link: function ($scope, element, attrs) { 
    element.bind('mouseover', function() { 
     alert("hi"); 

    }); 
} 

Вы также можете получить значение id из attrs параметра по: attrs.id - это всегда будет рассматриваться как строка в этом случае и, вероятно, это лучший подход.

+0

Когда я изменяю «=» на «@», вся директива перестает работать. Он больше не печатает предупреждение «привет». –

+0

Вы попробовали другой подход? это порождало некоторые ошибки? у вас есть больше кода в вашей директиве? –

+0

@Adarsh ​​оба варианта работают отлично для меня. вы уверены, что создали уникальные 'id'? –

Смежные вопросы