簡體   English   中英

更新角度指令中的相同值

[英]updating same value in angular directive

我一直在嘗試更新角度指令問題中的輸入值:當我第一次更新值時,它可以工作,但是當我使用與第一個值相同的值來更新它時。 它增加了價值

return {
require: 'ngModel',
link: function(scope, element, attrs, ctrl) {

    element.datetimepicker({
        weekStart: 1,
        todayBtn: 1,
        todayHighlight: 1,
        startView: 2,
        forceParse: 0,
        format: attrs.format ? attrs.format : "yyyy/MM/dd"
    }).on('changeDate', function(ev) {
        var dateUTC = new Date(ev.date.getTime() + (ev.date.getTimezoneOffset() * 60000));
        var masking = $filter('mapDateTimeFormat')(attrs.format ? attrs.format : "yyyy/MM/dd");
        var filterApply = $filter('date')(dateUTC, masking);
        $parse(attrs.ngModel).assign(scope, filterApply);
        scope.$apply();
    });
}

第一次,當我從日歷中選擇值時,例如23-10-15,但如果我再次更新相同的值,它將變成類似23-1010-2015的東西;如果我選擇其他日期,它將給我23-10-16的值。

我不知道我做錯了什么

$parse(attrs.ngModel).assign(scope, filterApply);

提供我23-10-15 ,所以不知道錯誤的值如何更新

:角1.2.2

日歷 :自舉日歷

任何幫助將不勝感激

從UI中選擇后,您需要重新格式化日期。 當您使用Bootstrap日歷選擇日期時,其日期格式不同,而正常的Date()返回不同的日期。 您可以僅在日期上使用$ watch並更改日期格式,然后再次將其設置為相同的變量。

檢查下面的鏈接更多參考。

https://github.com/angular/angular.js/issues/3615

//從其他地方復制

您不希望替換scope.ngModel變量,而是替換該變量后面的值。 當您讀取鏈接函數第一行中的值時,您已經完成了該操作:

 currValue = parseInt(scope.$eval(attrs.ngModel))

如果它是一個普通值,例如myProperty,則可以在范圍上使用它:

scope[attr.ngModel] = newValue

但是,如果您有一個表達式值,例如container.myProperty,這將不起作用。 在這種情況下(這是您應該針對的是更通用的類型),您將必須評估設置為范圍的值,如下所示:

scope.$eval(attrs.ngModel + "=" + newValue)

我必須承認,$ eval部分有點難看,就像在帶eval吊墜的JavaScript中一樣,但這確實有用。 請記住,當您想要設置字符串值時,它可能無法通過這種方式工作。 然后,您必須轉義那些值。

希望能有所幫助;)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM