在AngularJS中使用默认属性
Using Default Properties in AngularJS
我正在开发AngularJS应用程序。在这个应用程序中,我正在处理一个自定义指令。此指令将根据自定义属性值进行不同的渲染。目前,我的指令如下:
<my-view size="small"></my-view>
...
<my-view></my-view>
...
<my-view size="large"></my-view>
定义该指令的代码如下所示:
myApp.directive('myView', function ($window) {
return {
restrict:'E',
transclude: true,
scope: {
size: '=?'
},
controller: function($scope) {
if (angular.isUndefined($scope.size)) {
$scope.size = 'medium';
}
},
template: '<div>{{size}}<br /><div ng-if="size == 'large'">I'm HUGE</div><div ng-if="size=='small'">I'm a wee little thing</div><div ng-if="size == medium">I'm the default</div></div>'
};
});
出于某种原因,我的指令不起作用。我注意到第一个{{size}}没有打印出任何内容。然而,如果我在控制器中执行console.log($scope.size),我会在控制台窗口中显示大小。它就像是在控制器完成初始化之前渲染视图。
我做错了什么?
您的指令有两个错误:
- 您应该转义模板中的撇号
- 如果要将属性作为字符串传递,则应使用
@
,等号=
用于将指令的属性与父作用域的属性进行数据绑定
所以你的直接联系人应该是这样的:
angular.module('test', [])
.controller('Controller', ['$scope', function($scope) {
$scope.test = 'asdf';
}])
.directive('myView', function ($window) {
return {
restrict:'E',
scope: {
size: '@'
},
controller: function($scope) {
if (angular.isUndefined($scope.size)) {
$scope.size = 'medium';
}
},
template: '<div>{{size}}<br/><div ng-if="size ==''large''">I''m HUGE</div><div ng-if="size==''small''">I''m a wee little thing</div><div ng-if="size == medium">I''m the default</div></div>'
};
});
工作示例
相关文章:
- 使用jQuery向“选择选项”添加默认属性
- 如何在更改的事件处理程序中忽略Polymer元素上默认属性的初始覆盖
- 原型上具有默认属性的es6类在traceur中抛出
- 为什么我的模型中的默认属性返回未定义
- 如何在 RaphaelJS 中根据需要为文本创建默认属性并链接其他属性
- Jquery 日期选择器删除 onclick 和 onchange 并添加默认属性
- babel 5和babel 6之间发生的事情导致我导入的模块存在于对象的默认属性之外
- 如何在Backbone.marionette.js的ItemView或Layout中设置默认属性
- 表单元素覆盖表单对象的默认属性
- 对象文字调用默认属性
- 确定Model'的当前属性与默认属性不同
- 在AngularJS中使用默认属性
- 如何设置twitter引导程序popover的默认属性值
- 无法在下划线模板中呈现主干模型的默认属性
- React:如何分配对象道具的默认属性
- 替换ckeditor中的默认属性
- Raphaeljs默认属性
- 如何在React with Typescript中设置默认属性值
- 为所有剑道UI栅格设置默认属性
- 集合中的默认属性