我是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替换了你的日期时间库。但你应该知道它的要点。这个例子很有用,所以也许你可以倒退,看看你可能做了什么不同的事情。祝你好运! –
没关系......我发现了这个问题。我在下面发布它作为答案。 –