第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我可以在隔離范圍內(nèi)使用ng-model嗎?

我可以在隔離范圍內(nèi)使用ng-model嗎?

搖曳的薔薇 2019-10-12 10:14:59
我正在創(chuàng)建簡單的ui-datetime指令。它將javascript日期對象分為_date,_hours和_minutes部分。_date使用jquery ui datepicker,_hours和_minutes-數(shù)字輸入。angular.module("ExperimentsModule", [])    .directive("uiDatetime", function () {    return {        restrict: 'EA',        replace: true,        template: '<div class="ui-datetime">' +            '<input type="text" ng-model="_date" class="date">' +            '<input type="number" ng-model="_hours" min="0" max="23" class="hours">' +            '<input type="number" ng-model="_minutes" min="0" max="59" class="minutes">' +            '<br />Child datetime1: {{datetime1}}' +            '</div>',        require: 'ngModel',        scope: true,        link: function (scope, element, attrs, ngModelCtrl) {            var elDate = element.find('input.date');            ngModelCtrl.$render = function () {                var date = new Date(ngModelCtrl.$viewValue);                var fillNull = function (num) {                    if (num < 10) return '0' + num;                    return num;                };                scope._date = fillNull(date.getDate()) + '.' + fillNull(date.getMonth() + 1) + '.' + date.getFullYear();                scope._hours = date.getHours();                scope._minutes = date.getMinutes();            };            elDate.datepicker({                dateFormat: 'dd.mm.yy',                onSelect: function (value, picker) {                    scope._date = value;                    scope.$apply();                }            });在github上:https : //github.com/andreev-artem/angular_experiments/tree/master/ui-datetime據(jù)我了解-創(chuàng)建新組件時的最佳實踐是使用隔離范圍。當(dāng)我嘗試使用隔離范圍時,沒有任何效果。ngModel。$ viewValue ===未定義。當(dāng)我嘗試使用新范圍時(我的示例,不是很好的變體imho)-ngModel在新創(chuàng)建的范圍上使用值。當(dāng)然,我可以創(chuàng)建具有隔離范圍的指令,并通過“ = expression”(示例)使用ngModel值。但是我認為使用ngModelController是更好的做法。我的問題:我可以在隔離范圍內(nèi)使用ngModelController嗎?如果不可能,哪種解決方案更適合創(chuàng)建此類組件?
查看完整描述

3 回答

?
BIG陽

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ù)(可以選擇)修改這兩個屬性。


查看完整回答
反對 回復(fù) 2019-10-12
  • 3 回答
  • 0 關(guān)注
  • 655 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號