我在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