Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript angularjs推送功能不工作_Javascript_Angularjs - Fatal编程技术网

Javascript angularjs推送功能不工作

Javascript angularjs推送功能不工作,javascript,angularjs,Javascript,Angularjs,嗨,我正在尝试制作一个单页angular js应用程序,但是在添加到列表“schedulelist”时,只有最新的记录被推到列表中,所有以前的记录都被最新的记录替换 这是我的Html: <table class="table1" cellspacing=2 cellpadding=5 border=0> <div ng-repeat="scheduleDTO in schedules"> <tr> <td> <SELECT

嗨,我正在尝试制作一个单页angular js应用程序,但是在添加到列表“schedulelist”时,只有最新的记录被推到列表中,所有以前的记录都被最新的记录替换

这是我的Html:

 <table class="table1" cellspacing=2 cellpadding=5 border=0>
  <div ng-repeat="scheduleDTO in schedules">
<tr>
<td>
       <SELECT id="days" name="days" class="form-right" style="width:90%" ng-model="scheduleDTO.day_of_the_week" required>

                    <OPTION selected value="Monday">Monday</OPTION>
                    <OPTION value="Tuesday">Tuesday</OPTION>
                    <OPTION value="Wednesday">Wednesday</OPTION>
                    <OPTION value="Thursday">Thursday</OPTION>
                    <OPTION value="Friday">Friday</OPTION>
                    <OPTION value="Saturday">Saturday</OPTION>
                    <OPTION value="Sunday">Sunday</OPTION>              
        </SELECT>

</td>
<td>
       <SELECT id="start_time" name="Start" class="form-right" style="width:90%" ng-model="scheduleDTO.start_time" required>
                    <OPTION value="1:00">01:00</OPTION>
                    <OPTION value="2:00">02:00</OPTION>
                    <OPTION value="3:00">03:00</OPTION>
                    <OPTION value="4:00">04:00</OPTION>
                    <OPTION value="5:00">05:00</OPTION>
                    <OPTION value="6:00">06:00</OPTION>
                    <OPTION value="7:00">07:00</OPTION>
                    <OPTION value="8:00">08:00</OPTION>
                    <OPTION selected value="9:00">09:00</OPTION>
                    <OPTION value="10:00">10:00</OPTION>
                    <OPTION value="11:00">11:00</OPTION>
                    <OPTION value="12:00">12:00</OPTION>
        </SELECT>

</td>
<td>
<SELECT id="start" name="am" class="form-right" style="width:90%" ng-model="scheduleDTO.start_time_meridiem"required>
                    <OPTION selected value="AM">AM</OPTION>
                    <OPTION value="PM">PM</OPTION>
</SELECT>

<td><SELECT  id="end_time"class="form-right" name="end" style="width:90%" ng-model="scheduleDTO.end_time" required>
                    <OPTION value="1:00">01:00</OPTION>
                    <OPTION value="2:00">02:00</OPTION>
                    <OPTION value="3:00">03:00</OPTION>
                    <OPTION value="4:00">04:00</OPTION>
                    <OPTION selected value="5:00">05:00</OPTION>
                    <OPTION value="6:00">06:00</OPTION>
                    <OPTION value="7:00">07:00</OPTION>
                    <OPTION value="8:00">08:00</OPTION>
                    <OPTION value="9:00">09:00</OPTION>
                    <OPTION value="10:00">10:00</OPTION>
                    <OPTION value="11:00">11:00</OPTION>
                    <OPTION value="12:00">12:00</OPTION>
        </SELECT>

        </td>
<td>

<SELECT id="end" name="pm" class="form-right" style="width:90%" ng-model="scheduleDTO.end_time_meridiem" required>
                    <OPTION value="AM">AM</OPTION>
                    <OPTION selected value="PM">PM</OPTION>
</SELECT>


</td>
<td><input type="button" class="addSch" ng-click="add(scheduleDTO)" value="Add Schedule" style="width:90%"> <!-- add_schedule(); -->

</td>
</tr>
</div>
</table>
<table align='center' class="table1" cellspacing=2 cellpadding=5 id="table" border=0>

<tr ng-repeat="ScheduleDTO in schedulelist">

<td>{{scheduleDTO.day_of_the_week}}</td>
<td>{{scheduleDTO.start_time}}</td>
<td>{{scheduleDTO.start_time_meridiem}}</td><td>To</td>
<td>{{scheduleDTO.end_time}}</td>
<td>{{scheduleDTO.end_time_meridiem}}</td>
<td><input type='button' value='Delete' class='delete' ng-click="remove(scheduleDTO)"></td>


</table>
用于避免模式中的引用副本

这是同一个被再次使用和数据被覆盖

$scope.schedulelist.push({"ScheduleDTO":angular.copy(schedule)});

javascript中只有一个对象实例,如果您创建一个对象,将有一个对它的引用,即如果您在对象中更改,所有值都将更改,因此即使您每次更改值,数组中推送的所有值都将引用同一个对象。 更好的解决方案是

 $scope.add = function (scheduleValue) 
        {
          var schedule=angular.copy(scheduleValue);
               schedule.volunteer_id="";
                            schedule.sid="";
               $scope.schedulelist.push({"ScheduleDTO":schedule});
                alert(angular.toJson($scope.schedulelist));
        };

问题就在这方面

$scope.schedulelist.push({“ScheduleDTO”:schedule})

每个团队都会将一条记录推送到对象的ScheduleDTO属性,每次新条目都会替换旧条目

你可以这样做

$scope.add = function (schedule) 
{                   schedule.volunteer_id="";
schedule.sid="";
//Create an array of ScheduleDTO 
if(  $scope.schedulelist.ScheduleDTO instanceof Array == false) {
    $scope.schedulelist.ScheduleDTO = []
}
//Push the schedule into the array
$scope.schedulelist.ScheduleDTO.push(schedule);
alert(angular.toJson($scope.schedulelist));
};  

使用角度复制,还可以从选择框和列表中更改变量名称


你能帮个忙吗?非常感谢你的帮助。但还有一个问题。打印时只打印最新的记录,您可以创建一个小提琴。这会有帮助的。
$scope.add = function (schedule) 
{                   schedule.volunteer_id="";
schedule.sid="";
//Create an array of ScheduleDTO 
if(  $scope.schedulelist.ScheduleDTO instanceof Array == false) {
    $scope.schedulelist.ScheduleDTO = []
}
//Push the schedule into the array
$scope.schedulelist.ScheduleDTO.push(schedule);
alert(angular.toJson($scope.schedulelist));
};  
 (function($){

try{
var demoApp = angular.module('demoApp',[]);
demoApp.controller('demoController',['$scope',function($scope){
    $scope.schedulelist = [

    ];


    $scope.add = function (scheduleObject) {   

                            var schedule = angular.copy(scheduleObject)
                  schedule['volunteer_id']="";
                  schedule['sid']="";

                  $scope.schedulelist.push(
                    {"ScheduleDTO":schedule}
                  );
            };
    $scope.remove = function(schedule) { 
                var index = $scope.schedulelist.indexOf(schedule);
                $scope.schedulelist.splice(index, 1);     
                    alert(angular.toJson($scope.schedulelist));
            };

            }])
}catch(e){
console.log(e)
}

})(jQuery)