范围变量在函数内部未定义 - AngularJS

时间:2015-01-19 13:10:22

标签: javascript angularjs angularjs-scope

我需要使用范围变量调用函数。它的内部函数未定义。

setstates($scope.events.myevent,bannerslidesmyevent,$scope.eventPlus,$scope.myeventtime,myeventcurrenttime);

定义:

function setstates(event,banner,eventplus,eventtime,currenteventtime)
{
  if(event ===null || event ==='null' || event ===undefined)
    {
        banner.goto(2);
        eventplus = -1;
    }
    else if(event[0] === '+')
    {
        banner.goto(2);
        eventplus = event.split('+')[1];
    }
    else 
    {
        currenteventtime.setHours(event.split(':')[0]);
        currenteventtime.setMinutes(event.split(':')[1]);
        eventtime = currenteventtime;
    }
}

问题是$scope.myeventtime,函数内部为eventtime,未定义。

HTML:

<timepicker class="timepicker" ng-model="myeventtime" hour-step="hstep" minute-step="mstep" show-meridian="ismeridian"></timepicker>

时间没有设定。

1 个答案:

答案 0 :(得分:0)

您正在更改局部变量eventtime的指向值而不是原始范围变量。 由于这是一个日期对象,您可以这样做:

eventtime.setHours(event.split(':')[0]);
eventtime.setMinutes(event.split(':')[1]);

这将作用于原始范围参数,因为setHourssetMinutes是原始对象的方法。

修改:刚刚意识到您正在尝试将currenteventtimeeventtime设置为相同的值。你需要在两者上运行setHourssetMinutes