我在AngularJS 1.5.x version
中构建了一组可重用的组件。每个指令都接受如下的模型。
<app-grid ng-model="scope.gridModel" />
gridModel是一个简单的类,如下所示,
function GridModel(cols) {
this.cols = cols;
}
我有什么方法可以在指令中检查传递的模型是GridModel
类型吗?
答案 0 :(得分:1)
我会在我的指令link
函数中尝试这样的事情:
...
link: function (scope, element, attrs, ngModel) {
if (ngModel instanceof GridModel) {
// right class
} else {
// wrong class
}
},
...
<强>更新强>:
这将立即检查ngModel
实例类型
如果要在事件发生变化时检查类型,则应设置$watch
...
像这样:
scope.$watch('ngModel', function(newValue, oldValue) {
if (newValue instanceof GridModel) {
// right class
} else {
// wrong class
}
});
答案 1 :(得分:0)
有可能。首先,我建议您创建一个访问GridModel
对象的服务,以便您可以从控制器和指令访问该对象。
myApp.service('GridService', function() {
this.GridModel = function(cols) {
this.cols = cols;
};
});
然后,在您的指令中,您可以使用GridModel
检查模型是否为InstanceOf
类型。
var GridModel = GridService.GridModel;
$scope.isGridModel = ($scope.model instanceof GridModel);
我构建了一个带有指令的示例,如果其模型的类型为true
,则会显示GridModel
,否则为false
。有关示例,请参阅this JSFiddle。