我在AngularJS 1.5.x version
中构建了一组可重用组件。每个指令都接受如下的模型。在angularjs指令中应用验证
<app-grid ng-model="scope.gridModel" />
的gridModel是一个简单的类看起来像下面,
function GridModel(cols) {
this.cols = cols;
}
有没有什么办法可以在传递模式GridModel
类型的指令检查?
我在AngularJS 1.5.x version
中构建了一组可重用组件。每个指令都接受如下的模型。在angularjs指令中应用验证
<app-grid ng-model="scope.gridModel" />
的gridModel是一个简单的类看起来像下面,
function GridModel(cols) {
this.cols = cols;
}
有没有什么办法可以在传递模式GridModel
类型的指令检查?
我会尝试这样的事情,在我的指导link
功能:
...
link: function (scope, element, attrs, ngModel) {
if (ngModel instanceof GridModel) {
// right class
} else {
// wrong class
}
},
...
UPDATE: 这将检查ngModel
实例立即输入。
如果要检查它改变了事件的类型,你应该建立一个$watch
...
事情是这样的:
scope.$watch('ngModel', function(newValue, oldValue) {
if (newValue instanceof GridModel) {
// right class
} else {
// wrong class
}
});
这是可能的。首先,我建议您创建一个访问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。
这将只适用于第一次rgt?如果稍后改变模型会发生什么。比方说某个地方,模型设置为不同的类型。 – VJAI
是的,当然...看到我的更新... – MarcoS
这很酷。我对角度不太了解,还有一个问题。范围。$ watch会做一个深入观察的rgt?如果是这样的话,我可以如何让手表在这里更平? – VJAI