我有一个带动态对话框的页面,想从angularJS控制器中添加一些内容。
html代码是:
<ons-template id="calendar.html">
<ons-dialog style="height: 250px;" var="naviDialog" cancelable ng-controller="datesController">
<ons-navigator var="myNav">
<div id="sevenDays" style="text-align: center"></div>
</ons-navigator>
</ons-dialog>
</ons-template>
控制器看起来像:
module.controller('datesController', function($scope) {
$scope.addDates = function () {
for (var i = 0; i <= 8; i++) {
var date = new Date();
date.setDate(date.getDate() + i);
$("#sevenDays").append("<div id='day" + i + "'>" + ("0" + date.getDate()).slice(-2) + "-" + ("0" + (date.getMonth() + 1)).slice(-2) + "-" + date.getFullYear() + "</div>");
}
$("#day0").replaceWith("<div id='day0' class='current'>today</div>");
$("#day1").replaceWith("<div id='day1'>tomorrow</div>");
};
$scope.addDates();
});
但是jQuery并没有将内容添加到#datesController
中有人会帮我解决这个问题吗?
答案 0 :(得分:1)
请在操作他之后尝试更新每个范围的DOM。$ apply()。
答案 1 :(得分:1)
在AngularJs中使用jquery不是一个好习惯。如果你想附加任何Div
,它们会更好地使用自己的DOM实例。 var myEl = angular.element(document.querySelector('#divID'));
myEl.prepend('your html
');
否则 写你的指令
答案 2 :(得分:0)
我已经对我的代码做了一个快速的setTimeout技巧,它现在运行正常:
module.controller('datesController', function($scope) {
$(function() {
setTimeout(function() {
for (var i = 0; i <= 6; i++) {
var date = new Date();
date.setDate(date.getDate() + i);
$("#sevenDays .list").append("<ons-list-item modifier='tappable' id='day" + i + "'>" + ("0" + date.getDate()).slice(-2) + "-" + ("0" + (date.getMonth() + 1)).slice(-2) + "-" + date.getFullYear() + "</ons-list-item>");
}
$("#day0").replaceWith("<ons-list-item modifier='tappable' id='day0' class='current'>today</ons-list-item>");
$("#day1").replaceWith("<ons-list-item modifier='tappable' id='day1'>tomorrow</ons-list-item>");
}, 100);
});
});
答案 3 :(得分:0)
在jsfiddle中使用显示工作示例的this链接。以下是代码:
<强> HTML 强>
<div ng-app="app">
<div id="sevenDays" ng-controller="datesController">
<div id="day{{$index + 1}}" ng-repeat="item in dateList">
{{$index + 1}})
<span ng-if="$index == 0">today</span>
<span ng-if="$index == 1">tomorrow</span>
<span ng-if="(($index != 0) && ($index != 1))">{{item.date}}</span>
</div>
</div>
</div>
<强> JS 强>
var app = angular.module('app', []);
app.controller('datesController', function ($scope) {
$scope.dateList = [];
$scope.addDates = function () {
for (var i = 0; i <= 8; i++) {
var date = new Date();
date.setDate(date.getDate() + i);
$scope.dateList.push({ 'date': ("0" + date.getDate()).slice(-2) + "-" + ("0" + (date.getMonth() + 1)).slice(-2) + "-" + date.getFullYear() });
}
};
$scope.addDates();
});