3 回答

TA貢獻1859條經(jīng)驗 獲得超6個贊
使您的指令以比ngModel更高的優(yōu)先級運行,并為孤立的作用域更正模型綁定。在高優(yōu)先級模板操作(例如ngRepeat)之后,但在默認值0(ngModel使用的默認值)之后,我選擇了與輸入指令相同級別的優(yōu)先級“ 100”。
這是示例代碼:
myDirective = function() {
return {
compile: function(tElement, tAttrs, transclude) {
// Correct ngModel for isolate scope
if (tAttrs.ngModel) {
tAttrs.$set('model', tAttrs.ngModel, false);
tAttrs.$set('ngModel', 'model', false);
}
return {
post: function(scope, iElement, iAttrs, controller) {
// Optionally hook up formatters and parsers
controller.$formatters.push(function(value) {
// ...
})
// Render
return controller.$render = function() {
if (!controller.$viewValue) {
return;
}
angular.extend(scope, controller.$viewValue);
};
}
};
},
priority: 100,
require: '^ngModel',
scope: {
model: '='
},
};
}
在編譯期間,偽指令檢查ngModel屬性是否存在。該檢查使用Angular的Attributes對歸一化值進行處理。如果存在該屬性,則將其替換為“ model”(不是“ ngModel”),這是數(shù)據(jù)綁定到我們隔離區(qū)中的名稱。但是,我們還必須創(chuàng)建一個屬性,以便Angular可以為我們執(zhí)行數(shù)據(jù)綁定??梢允褂靡粋€false使DOM保持不變的參數(shù)(可以選擇)修改這兩個屬性。
- 3 回答
- 0 關(guān)注
- 655 瀏覽
添加回答
舉報