【发布时间】:2015-02-19 15:27:11
【问题描述】:
我有这样的指令:
.directive('myPane', function() {
return {
restrict: 'E',
transclude: true,
scope: {
title: '@'
},
controller: function($scope, $timeout) {
$scope.title = "Foo";
},
templateUrl: 'my-pane.html'
};
});
我的 HTML 如下所示:
<my-pane title="Hello">
<p>Lorem ipsum dolor sit amet</p>
</my-pane>
还有my-pane.html:
<h4>{{title}}</h4>
<div class="tab-pane" ng-transclude>
</div>
现在,由于某种原因,尝试覆盖 title 属性不起作用。
我的问题是,为什么不呢?
到目前为止我发现了什么:
- 这在
link函数中的行为相同 - 在
link函数中使用attrs.title = "Foo"的行为就像我希望的那样 - 使用
$timeout(function(){ $scope.title = "Foo"; })也可以按照我的意愿行事
相关Plunkr:http://plnkr.co/edit/SxbGj4BZlcSX1BfkSHbq?p=preview
【问题讨论】:
-
你想要完成什么?如果在创建时未提供标题,您是想提供一个标题,还是总是想覆盖标题属性?
-
如果没有提供
title,我将尝试提供。如果根本没有设置属性,这似乎可行,但如果设置如下:title="{{obj.title}}"其中obj.title是null,那不起作用...
标签: javascript angularjs