【发布时间】:2013-10-14 19:22:25
【问题描述】:
我的指令工作正常,显示所有趋势标签。该指令在 $scope 对象中查找 TrendingTag 属性。所以我有范围:true
app.directive('ngTrending', function () {
return {
restrict: 'E'
, transclude: true
, replace: true
, scope: true
, templateUrl: '/resources/ngViews/trending.html'
};
});
现在我希望能够基于指令上的属性基于选项(如只读 =“true”)对其进行配置。并且能够根据诸如此类的属性有条件地更改模板的次要方面
<ng-trending></ng-trending>
在启用操作的情况下生成趋势标签。而
<ng-trending read-only="true"></ng-trending>
生成标签,但禁用点击。如何对指令的范围进行编码,以便我仍然继承托管指令的控制器的范围,例如
<div ng-controller="fancy">
<ng-trending></ng-trending>
</div>
就像现在一样(在指令模板内部,我引用了 fancyContrllers $scope.trendingTags 属性)。但在指令模板中,我想引用 $scope 中的“只读”。
我突然意识到我完全错误地处理了这个问题,并且我可能也想传递趋势标签......我很困惑 - 请帮助我理顺我!
谢谢。
【问题讨论】:
-
如果您不想更改指令的范围,我认为您可以检查
link函数中的属性(attrs.readOnly会给您一个字符串值)。您可以使用scope.$eval(attrs.readOnly)或$parse进行单向和双向绑定。 -
@jpmorin 的建议对我很有效。尽管在某些情况下它可能很有效,但这并不是要养成的习惯。
标签: javascript angularjs