我是Angular的新手。我創建了一個小指令,用戶可以輸入時間戳並添加/減去1天。該指令需要被隔離,以便它可以在我的應用程序中出現多次。用AngularJS隔離指令
這是我初始化我的日期部分:
$scope.dateFrom = {
label : 'Date From',
date : mii.utils.date.dateToIntDate(start)
}
$scope.dateUntil = {
label : 'Date Until',
date : mii.utils.date.dateToIntDate(end)
}
在我看來的HTML創建我的指令的2個實例:
<date-input date="dateFrom"></date-input>
<date-input date="dateUntil"></date-input>
結果看起來像下面的圖片。兩個分開的輸入字段,每個字段都有自己的標籤和默認值。到目前爲止,隔離似乎正在發揮作用。然而
的問題是,當我點擊的Date From
的加號,這將增加一天來的Date Until
值。當我在函數_addDays
中查看調試器時,我發現$scope.dateInfo
確實指向dateUntil對象,即使我正在使用date From進行交互。我錯過了什麼?
date.html
<div id="date-input">
<span>
<img src="assets/img/minus.png" class="icon left" ng-click="yesterday()"/>
{{dateInfo.label}}
<img src="assets/img/add.png" class="icon right" ng-click="tomorrow()"/>
</span>
<input ng-model="dateInfo.date" class="center"/>
</div>
dateController.js
app.directive("dateInput", function() {
return {
restrict: "E",
templateUrl : "app/shared/dateInput/date.html",
scope : {
dateInfo : "=date"
},
link : function($scope, $element, $attrs) {
$scope.yesterday = function(){
_addDays(-1);
};
$scope.tomorrow = function(){
_addDays(1);
}
_addDays = function(days){
var d = mii.utils.date.intDateToDate($scope.dateInfo.date);
var newD = new Date(d);
newD.setDate(d.getDate()+days);
$scope.dateInfo.date = mii.utils.date.dateToIntDate(newD);
}
}
}
});
我重建了你的例子作爲jsfiddle:(http://jsfiddle.net/aqewsu40/1/)。我沒有訪問你的一些庫,所以我用moment.js替換了你的日期時間庫。但你應該知道它的要點。這個例子很有用,所以也許你可以倒退,看看你可能做了什麼不同的事情。祝你好運! –
沒關係......我發現了這個問題。我在下面發佈它作爲答案。 –