AngularJS:如何更新$scope属性
我在$scope上有一个对象,它指示应用程序在更新后的“下一个屏幕”(我在一个类似向导的多屏幕新表单中),当每个屏幕显示时,我想在侧边栏中显示当前和所有后续屏幕——用户可以轻松返回进行更改,但不允许他/她通过不显示未来屏幕跳过步骤 当然,它必须是动态的,因为不同类型的贷款的屏幕顺序会发生变化 我的问题——在当前屏幕的控制器中,如何将状态更改为true并使视图识别更改?(LoDash可用) 这是$scope.screens(对象数组)的一部分: 我从farmer屏幕移动到Appender屏幕,可以从州URL通知“Appender”——该值应该能够用于在$scope.screens中“查找”正确的对象,但我无法找到它 这是AppliantController的相关部分--警报(currScreen)=“申请人”:AngularJS:如何更新$scope属性,angularjs,angularjs-scope,Angularjs,Angularjs Scope,我在$scope上有一个对象,它指示应用程序在更新后的“下一个屏幕”(我在一个类似向导的多屏幕新表单中),当每个屏幕显示时,我想在侧边栏中显示当前和所有后续屏幕——用户可以轻松返回进行更改,但不允许他/她通过不显示未来屏幕跳过步骤 当然,它必须是动态的,因为不同类型的贷款的屏幕顺序会发生变化 我的问题——在当前屏幕的控制器中,如何将状态更改为true并使视图识别更改?(LoDash可用) 这是$scope.screens(对象数组)的一部分: 我从farmer屏幕移动到Appender屏幕,可以
(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);
});
};
});
})();