use*_*869 5 angularjs angularjs-scope
该指令具有隔离范围,并且范围属性以"@"传递.
这是指令的调用方式:
<div ng-init="classForIcon = 'vladClass'"></div>
<div ng-init="textForIcon = 'Icon\'s text'"></div>
<div ng-init="routeForIcon = 'www.google.com'"></div>
<div ng-init="tooltipForIcon = 'my tooltip'"></div>
<div ng-init="imageForIcon = 'images/HOME_ICON1.png'"></div>
<rl-icon-widget icon-class="{{classForIcon}}" icon-text = "{{textForIcon}}" icon-tooltip="{{tooltipForIcon}}" icon-route="{{routeForIcon}}" icon-image="{{imageForIcon}}"></rl-icon-widget>
Run Code Online (Sandbox Code Playgroud)
这是指令的定义方式:
'使用严格';
fcPortalApp.directive('rlIconWidget', ['localizationAssistant', function(localizationAssistant) {
var obj = {
restrict: 'E',
templateUrl: 'scripts/directives/rliconwidget/rliconwidget.html',
//require: 'ngModel',
scope: {
//ngModel: '@',
iconClass: "@",
iconRoute: "@",
iconText: "@",
iconTooltip: "@",
iconImage: "@"
},
link: function(scope, element, attrs) {
console.log(scope);
console.log(scope.iconImage);
console.log(scope.iconTooltip);
console.log(scope.iconRoute);
}
};
console.log(obj);
return obj;
}]);
Run Code Online (Sandbox Code Playgroud)
当我检查范围对象(单击console.log的输出(firebug中的scope_)时,看起来它正确设置了iconImage,iconTooltip和iconRoute属性.
然而,console.log(scope.iconImage),console.log(scope.iconTooltip)和console.log(scope.iconRoute)打印"undefined"
Mar*_*cok 10
使用
$observe观察到,含有插(如属性值的变化src="{{bar}}").这不仅非常有效,而且它也是轻松获得实际值的唯一方法,因为在链接阶段,插值尚未进行评估,因此此时的值设置为undefined.- 指令文件
手动检查范围时,将定义值.
我们需要使用$ observe的原因(实际上$ watch也适用于用'@'定义的隔离范围属性)是因为当插值值发生变化时,指令可能需要做一些事情.例如,如果textForIcon更改的值,您可能希望修改由指令管理的DOM中的某些内容.
如果需要链接函数运行时定义的值,则有两个选项:
<rl-icon-widget icon-class="vladClass" ...> attrs.iconClass- 不需要'@'.| 归档时间: |
|
| 查看次数: |
3288 次 |
| 最近记录: |