Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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
AngularJS:如何更新$scope属性_Angularjs_Angularjs Scope - Fatal编程技术网

AngularJS:如何更新$scope属性

AngularJS:如何更新$scope属性,angularjs,angularjs-scope,Angularjs,Angularjs Scope,我在$scope上有一个对象,它指示应用程序在更新后的“下一个屏幕”(我在一个类似向导的多屏幕新表单中),当每个屏幕显示时,我想在侧边栏中显示当前和所有后续屏幕——用户可以轻松返回进行更改,但不允许他/她通过不显示未来屏幕跳过步骤 当然,它必须是动态的,因为不同类型的贷款的屏幕顺序会发生变化 我的问题——在当前屏幕的控制器中,如何将状态更改为true并使视图识别更改?(LoDash可用) 这是$scope.screens(对象数组)的一部分: 我从farmer屏幕移动到Appender屏幕,可以

我在$scope上有一个对象,它指示应用程序在更新后的“下一个屏幕”(我在一个类似向导的多屏幕新表单中),当每个屏幕显示时,我想在侧边栏中显示当前和所有后续屏幕——用户可以轻松返回进行更改,但不允许他/她通过不显示未来屏幕跳过步骤

当然,它必须是动态的,因为不同类型的贷款的屏幕顺序会发生变化

我的问题——在当前屏幕的控制器中,如何将状态更改为true并使视图识别更改?(LoDash可用)

这是$scope.screens(对象数组)的一部分:

我从farmer屏幕移动到Appender屏幕,可以从州URL通知“Appender”——该值应该能够用于在$scope.screens中“查找”正确的对象,但我无法找到它

这是AppliantController的相关部分--警报(currScreen)=“申请人”:

(function(){
    'use strict';
    angular
      .module('ARM')
      .controller('NewApplicantController', function(
        $scope, $state, $stateParams, Loan,
        AppFactory, ApplicantsFactory
      ){
        var curr = $state.current.url;
        var currScreen = curr.substring(1,curr.length);
        alert(currScreen);

        $scope.loan = Loan.data.data[0];

        if($scope.loan.applicant_id) {
          ApplicantsFactory.getApplicant($scope.loan.applicant_id)
            .then(function success(rsp) {
              $scope.applicant = rsp.data.data;
              $scope.applicant.entity_type_id = '2';
            });
        } else {
          $scope.applicant = { entity_type_id: '2' };
        } // end if

        $scope.createApplicant = function() {
          ApplicantsFactory.createApplicant($scope.applicant)
            .then(function(rsp){
              AppFactory.patchIt('/loans/', $stateParams.loanID, {applicant_id: rsp.data.message});
              AppFactory.moveToNextNewLoanScreen(currScreen, $stateParams);
            });
        };
      });
})();

可能是因为根据您上面提到的屏幕数组,“currScreen”未定义?我的意思是“$scope.screens[0].currScreen”不存在,因此无法分配“$scope.screens[0].currScreen.status=1”

它到底在哪里坏了。
currScreen
是否未定义?否,currScreen(在本例中)提醒“申请人”。。。我只是不知道如何引用对象来将状态更改为1。。。我尝试了$scope.screens[0]。currScreen.status=1:$scope.$apply(),但这不起作用。很可能是,但我不知道如何更改该状态。。。有没有更好的方法来设置它(我希望不是因为难的部分——也就是动态导航——工作得很好。我只需要一种方法来“打开”导航中的当前屏幕。如果您正在谈论将currScreen添加到模型中,则有两种可能的方法。您可以实例化$scope.screens以在每个对象中具有currScreen属性,或者不执行“$scope.screens[0]。currScreen.status=1”,而是执行“$scope.screens[0]。currScreen={status:1}”
(function(){
    'use strict';
    angular
      .module('ARM')
      .controller('NewApplicantController', function(
        $scope, $state, $stateParams, Loan,
        AppFactory, ApplicantsFactory
      ){
        var curr = $state.current.url;
        var currScreen = curr.substring(1,curr.length);
        alert(currScreen);

        $scope.loan = Loan.data.data[0];

        if($scope.loan.applicant_id) {
          ApplicantsFactory.getApplicant($scope.loan.applicant_id)
            .then(function success(rsp) {
              $scope.applicant = rsp.data.data;
              $scope.applicant.entity_type_id = '2';
            });
        } else {
          $scope.applicant = { entity_type_id: '2' };
        } // end if

        $scope.createApplicant = function() {
          ApplicantsFactory.createApplicant($scope.applicant)
            .then(function(rsp){
              AppFactory.patchIt('/loans/', $stateParams.loanID, {applicant_id: rsp.data.message});
              AppFactory.moveToNextNewLoanScreen(currScreen, $stateParams);
            });
        };
      });
})();