Angularjs formlyConfig.setType中的角度表达式

Angularjs formlyConfig.setType中的角度表达式,angularjs,angularjs-directive,angularjs-scope,javascript-objects,angular-formly,Angularjs,Angularjs Directive,Angularjs Scope,Javascript Objects,Angular Formly,这里最大的问题是:如果变量scope.prodStatusText的值确实得到了新的值,为什么像这样的表达式在视图中不被更新 说明: formlyConfig.setType({ name: 'prodStatus', template: "<label class='control-label'>Production Status</label><br><span class='{{prodStatusTextColor}}'>&

这里最大的问题是:如果变量
scope.prodStatusText
的值确实得到了新的值,为什么像这样的表达式在视图中不被更新

说明:

formlyConfig.setType({
    name: 'prodStatus',
    template: "<label class='control-label'>Production Status</label><br><span class='{{prodStatusTextColor}}'><i class='{{prodStatusStatusIcon}}'></i> &nbsp;&nbsp; <span class='{{prodStatusTextColor}}'>{{model[options.key]}}</span> &nbsp;&nbsp; <!--i class='{{prodStatusInfoIcon}}'></i--></span>"
});
//term date
formlyConfig.setType({
    name: 'termDate',
    template: "<div data-ng-show='inclTermDate'><label class='control-label text-danger'>Termination Date</label><i class=fa fa-lg fa-calendar-times-o></i> <span class='text-danger'> &nbsp;&nbsp; {{model[options.key] | date:'yyyy-MM-dd'}} &nbsp;&nbsp; </span></div>"
});
<div formly-field="" ng-repeat="field in fields " ng-if="!field.hide"
class="formly-field ng-scope ng-isolate-scope col-sm-6 col-lg-3 col-md-4
formly-field-prodStatus" options="field" model="field.model || model" fields="fields" form="theFormlyForm" form-id="formly_10" form-
state="options.formState" index="$index"><label class="control-label ng-scope">Production Status</label><br class="ng-scope"><span class=""><i class="">
</i> &nbsp;&nbsp; <span class="">Inactive</span> &nbsp;&nbsp; <!--i 
class='{{prodStatusInfoIcon}}'></i--></span></div>
<label class="control-label ng-scope">Production Status</label><br class="ng-scope">
<span class=""><i class=""></i> &nbsp;&nbsp; <span class="">Inactive</span> &nbsp;&nbsp; <!--i class='{{prodStatusInfoIcon}}'></i--></span></div>
{
                className: 'col-sm-6 col-lg-3 col-md-4',
                key: 'AGENT_LNAME',
                type: 'input',
                templateOptions: {
                    type: 'text',
                    label: 'Last Name',
                    placeholder: 'Agent Last Name'
                },
                expressionProperties: {
                    'templateOptions.tabindex': '4' 
                },
                watcher: {
                    expression: function(field, scope) {
                        return field.formControl && field.formControl.$viewValue;
                    },
                    listener: function(field, newValue, oldValue, scope, stopWatching) {
                        agentPersInfoModel.chng = {
                            prodStatusTextColor: "text-success",
                            prodStatusStatusIcon: "fa fa-lg fa-check-circle-o fa-lg",
                            prodStatusInfoIcon: "fa fa-lg fa-info-circle",
                            isActiveStatus : false,
                            inclTermDate : false
                        };
                        scope.prodStatusTextColor = agentPersInfoModel.chng.prodStatusTextColor;
                        scope.prodStatusStatusIcon = agentPersInfoModel.chng.prodStatusStatusIcon;
                        scope.prodStatusInfoIcon = agentPersInfoModel.chng.prodStatusInfoIcon;
                        scope.inclTermDate = agentPersInfoModel.chng.inclTermDate;
                        scope.isActiveStatus = agentPersInfoModel.chng.isActiveStatus;
                        if(newValue) {
                            console.log('Function Expression: ' + newValue);
                            console.log('Field: ');
                            console.log(field);
                            console.log('oldValue: ' + oldValue);
                            console.log(oldValue);
                            console.log('Scope: ');
                            console.log(scope);
                            console.log("agentPersInfoModel.chng");
                            console.log(agentPersInfoModel.chng);
                            console.log("agentModel prod status");
                            console.log(agentModel.singleAgent.PRODUCTION_STATUS);
                            if(agentModel.singleAgent.PRODUCTION_STATUS === 'Active' && agentModel.singleAgent.TERMINATION_DATE === "00010101") {
                                agentPersInfoModel.chng.isActiveStatus = true;
                                agentPersInfoModel.chng.prodStatusTextColor = "text-success";
                                agentPersInfoModel.chng.prodStatusStatusIcon = "fa fa-lg fa-check-circle-o fa-lg";
                                agentPersInfoModel.chng.prodStatusInfoIcon = "fa fa-lg fa-info-circle";
                                agentPersInfoModel.chng.inclTermDate = false;
                                console.log("============= in the listner (history) =====================");
                                console.log("we are active");
                                console.log("agentPersInfoModel.chng.prodStatusInfoIcon");
                                console.log(agentPersInfoModel.chng.prodStatusInfoIcon);
                                console.log("agentPersInfoModel.chng.prodStatusStatusIcon");
                                console.log(agentPersInfoModel.chng.prodStatusStatusIcon);
                                console.log("agentPersInfoModel.chng.prodStatusTextColor");
                                console.log(agentPersInfoModel.chng.prodStatusTextColor);
                                console.log("agentPersInfoModel.chng.inclTermDate");
                                console.log(agentPersInfoModel.chng.inclTermDate);
                                console.log("==================================");
                            } else if(agentModel.singleAgent.PRODUCTION_STATUS === 'Inactive') {
                                agentPersInfoModel.chng.prodStatusTextColor = "text-warning";
                                agentPersInfoModel.chng.prodStatusStatusIcon = "fa fa-ban fa-lg";
                                agentPersInfoModel.chng.prodStatusInfoIcon = " fa fa-lg fa-alert ";
                                agentPersInfoModel.chng.inclTermDate = false;
                                console.log("============= in the listner (history) =====================");
                                console.log("we are inactive");
                                console.log("agentPersInfoModel.chng.prodStatusInfoIcon");
                                console.log(agentPersInfoModel.chng.prodStatusInfoIcon);
                                console.log("agentPersInfoModel.chng.prodStatusStatusIcon");
                                console.log(agentPersInfoModel.chng.prodStatusStatusIcon);
                                console.log("agentPersInfoModel.chng.prodStatusTextColor");
                                console.log(agentPersInfoModel.chng.prodStatusTextColor);
                                console.log("agentPersInfoModel.chng.inclTermDate");
                                console.log(agentPersInfoModel.chng.inclTermDate);
                                console.log("==================================");
                            } else if(agentModel.singleAgent.TERMINATION_DATE !== "00010101") {
                                agentPersInfoModel.chng.prodStatusTextColor = "text-danger";
                                agentPersInfoModel.chng.prodStatusStatusIcon = "fa fa-times fa-lg";
                                agentPersInfoModel.chng.prodStatusInfoIcon = " fa fa-lg fa-alert ";
                                agentPersInfoModel.chng.prodStatusCalIcon = " fa fa-lg fa-calendar-times-o ";
                                agentPersInfoModel.chng.inclTermDate = true;
                                console.log("============= in the listner (history) =====================");
                                console.log("we are term'd");
                                console.log("agentPersInfoModel.chng.prodStatusInfoIcon");
                                console.log(agentPersInfoModel.chng.prodStatusInfoIcon);
                                console.log("agentPersInfoModel.chng.prodStatusStatusIcon");
                                console.log(agentPersInfoModel.chng.prodStatusStatusIcon);
                                console.log("agentPersInfoModel.chng.prodStatusTextColor");
                                console.log(agentPersInfoModel.chng.prodStatusTextColor);
                                console.log("agentPersInfoModel.chng.inclTermDate");
                                console.log(agentPersInfoModel.chng.inclTermDate);
                                console.log("==================================");
                            } else {
                                agentPersInfoModel.chng.isActiveStatus = false; 
                                agentPersInfoModel.chng.prodStatusTextColor = "text-warning";
                                agentPersInfoModel.chng.prodStatusStatusIcon = "fa fa-ban fa-lg";
                                agentPersInfoModel.chng.prodStatusInfoIcon = " fa fa-lg fa-alert ";
                                agentPersInfoModel.chng.inclTermDate = false;
                                console.log("============= in the listner  (history)=====================");
                                console.log("we didnt match");
                                console.log("agentPersInfoModel.chng.prodStatusInfoIcon");
                                console.log(agentPersInfoModel.chng.prodStatusInfoIcon);
                                console.log("agentPersInfoModel.chng.prodStatusStatusIcon");
                                console.log(agentPersInfoModel.chng.prodStatusStatusIcon);
                                console.log("agentPersInfoModel.chng.prodStatusTextColor");
                                console.log(agentPersInfoModel.chng.prodStatusTextColor);
                                console.log("agentPersInfoModel.chng.inclTermDate");
                                console.log(agentPersInfoModel.chng.inclTermDate);
                                console.log("==================================");
                            }
                        }
                    }
                },
                controller: /*@ngInject*/function($scope, AgentPersInfoModel) {
                    $scope.switchTermColors = function (status) {

                    };
                }
            }
agentModel prod status
agentPersonalInfoFormly-service.js:221 Inactive 
============= in the listner (history) =====================
agentPersonalInfoFormly-service.js:245 we are inactive
agentPersInfoModel.chng.prodStatusInfoIcon
agentPersonalInfoFormly-service.js:247  fa fa-lg fa-alert 
agentPersInfoModel.chng.prodStatusStatusIcon
agentPersonalInfoFormly-service.js:249 fa fa-ban fa-lg
agentPersInfoModel.chng.prodStatusTextColor
agentPersonalInfoFormly-service.js:251 text-warning
agentPersInfoModel.chng.inclTermDate
agentPersonalInfoFormly-service.js:253 false
我有一个应用程序,它有一个在搜索结果后加载的模型,可以使用历史函数来修改它以加载另一个数据集。历史记录函数包含在另一个祖辈作用域中。我已经能够确认,在第一次加载数据和历史记录更改时,我用于dom更改的obj值确实会在应该的时候(在控制台中)更新并保持正确的值

我使用的是formly表单,有一个包含双向绑定变量的模板集,可以根据其他字段值更改样式和图标。 模板如下:

formlyConfig.setType({
    name: 'prodStatus',
    template: "<label class='control-label'>Production Status</label><br><span class='{{prodStatusTextColor}}'><i class='{{prodStatusStatusIcon}}'></i> &nbsp;&nbsp; <span class='{{prodStatusTextColor}}'>{{model[options.key]}}</span> &nbsp;&nbsp; <!--i class='{{prodStatusInfoIcon}}'></i--></span>"
});
//term date
formlyConfig.setType({
    name: 'termDate',
    template: "<div data-ng-show='inclTermDate'><label class='control-label text-danger'>Termination Date</label><i class=fa fa-lg fa-calendar-times-o></i> <span class='text-danger'> &nbsp;&nbsp; {{model[options.key] | date:'yyyy-MM-dd'}} &nbsp;&nbsp; </span></div>"
});
<div formly-field="" ng-repeat="field in fields " ng-if="!field.hide"
class="formly-field ng-scope ng-isolate-scope col-sm-6 col-lg-3 col-md-4
formly-field-prodStatus" options="field" model="field.model || model" fields="fields" form="theFormlyForm" form-id="formly_10" form-
state="options.formState" index="$index"><label class="control-label ng-scope">Production Status</label><br class="ng-scope"><span class=""><i class="">
</i> &nbsp;&nbsp; <span class="">Inactive</span> &nbsp;&nbsp; <!--i 
class='{{prodStatusInfoIcon}}'></i--></span></div>
<label class="control-label ng-scope">Production Status</label><br class="ng-scope">
<span class=""><i class=""></i> &nbsp;&nbsp; <span class="">Inactive</span> &nbsp;&nbsp; <!--i class='{{prodStatusInfoIcon}}'></i--></span></div>
{
                className: 'col-sm-6 col-lg-3 col-md-4',
                key: 'AGENT_LNAME',
                type: 'input',
                templateOptions: {
                    type: 'text',
                    label: 'Last Name',
                    placeholder: 'Agent Last Name'
                },
                expressionProperties: {
                    'templateOptions.tabindex': '4' 
                },
                watcher: {
                    expression: function(field, scope) {
                        return field.formControl && field.formControl.$viewValue;
                    },
                    listener: function(field, newValue, oldValue, scope, stopWatching) {
                        agentPersInfoModel.chng = {
                            prodStatusTextColor: "text-success",
                            prodStatusStatusIcon: "fa fa-lg fa-check-circle-o fa-lg",
                            prodStatusInfoIcon: "fa fa-lg fa-info-circle",
                            isActiveStatus : false,
                            inclTermDate : false
                        };
                        scope.prodStatusTextColor = agentPersInfoModel.chng.prodStatusTextColor;
                        scope.prodStatusStatusIcon = agentPersInfoModel.chng.prodStatusStatusIcon;
                        scope.prodStatusInfoIcon = agentPersInfoModel.chng.prodStatusInfoIcon;
                        scope.inclTermDate = agentPersInfoModel.chng.inclTermDate;
                        scope.isActiveStatus = agentPersInfoModel.chng.isActiveStatus;
                        if(newValue) {
                            console.log('Function Expression: ' + newValue);
                            console.log('Field: ');
                            console.log(field);
                            console.log('oldValue: ' + oldValue);
                            console.log(oldValue);
                            console.log('Scope: ');
                            console.log(scope);
                            console.log("agentPersInfoModel.chng");
                            console.log(agentPersInfoModel.chng);
                            console.log("agentModel prod status");
                            console.log(agentModel.singleAgent.PRODUCTION_STATUS);
                            if(agentModel.singleAgent.PRODUCTION_STATUS === 'Active' && agentModel.singleAgent.TERMINATION_DATE === "00010101") {
                                agentPersInfoModel.chng.isActiveStatus = true;
                                agentPersInfoModel.chng.prodStatusTextColor = "text-success";
                                agentPersInfoModel.chng.prodStatusStatusIcon = "fa fa-lg fa-check-circle-o fa-lg";
                                agentPersInfoModel.chng.prodStatusInfoIcon = "fa fa-lg fa-info-circle";
                                agentPersInfoModel.chng.inclTermDate = false;
                                console.log("============= in the listner (history) =====================");
                                console.log("we are active");
                                console.log("agentPersInfoModel.chng.prodStatusInfoIcon");
                                console.log(agentPersInfoModel.chng.prodStatusInfoIcon);
                                console.log("agentPersInfoModel.chng.prodStatusStatusIcon");
                                console.log(agentPersInfoModel.chng.prodStatusStatusIcon);
                                console.log("agentPersInfoModel.chng.prodStatusTextColor");
                                console.log(agentPersInfoModel.chng.prodStatusTextColor);
                                console.log("agentPersInfoModel.chng.inclTermDate");
                                console.log(agentPersInfoModel.chng.inclTermDate);
                                console.log("==================================");
                            } else if(agentModel.singleAgent.PRODUCTION_STATUS === 'Inactive') {
                                agentPersInfoModel.chng.prodStatusTextColor = "text-warning";
                                agentPersInfoModel.chng.prodStatusStatusIcon = "fa fa-ban fa-lg";
                                agentPersInfoModel.chng.prodStatusInfoIcon = " fa fa-lg fa-alert ";
                                agentPersInfoModel.chng.inclTermDate = false;
                                console.log("============= in the listner (history) =====================");
                                console.log("we are inactive");
                                console.log("agentPersInfoModel.chng.prodStatusInfoIcon");
                                console.log(agentPersInfoModel.chng.prodStatusInfoIcon);
                                console.log("agentPersInfoModel.chng.prodStatusStatusIcon");
                                console.log(agentPersInfoModel.chng.prodStatusStatusIcon);
                                console.log("agentPersInfoModel.chng.prodStatusTextColor");
                                console.log(agentPersInfoModel.chng.prodStatusTextColor);
                                console.log("agentPersInfoModel.chng.inclTermDate");
                                console.log(agentPersInfoModel.chng.inclTermDate);
                                console.log("==================================");
                            } else if(agentModel.singleAgent.TERMINATION_DATE !== "00010101") {
                                agentPersInfoModel.chng.prodStatusTextColor = "text-danger";
                                agentPersInfoModel.chng.prodStatusStatusIcon = "fa fa-times fa-lg";
                                agentPersInfoModel.chng.prodStatusInfoIcon = " fa fa-lg fa-alert ";
                                agentPersInfoModel.chng.prodStatusCalIcon = " fa fa-lg fa-calendar-times-o ";
                                agentPersInfoModel.chng.inclTermDate = true;
                                console.log("============= in the listner (history) =====================");
                                console.log("we are term'd");
                                console.log("agentPersInfoModel.chng.prodStatusInfoIcon");
                                console.log(agentPersInfoModel.chng.prodStatusInfoIcon);
                                console.log("agentPersInfoModel.chng.prodStatusStatusIcon");
                                console.log(agentPersInfoModel.chng.prodStatusStatusIcon);
                                console.log("agentPersInfoModel.chng.prodStatusTextColor");
                                console.log(agentPersInfoModel.chng.prodStatusTextColor);
                                console.log("agentPersInfoModel.chng.inclTermDate");
                                console.log(agentPersInfoModel.chng.inclTermDate);
                                console.log("==================================");
                            } else {
                                agentPersInfoModel.chng.isActiveStatus = false; 
                                agentPersInfoModel.chng.prodStatusTextColor = "text-warning";
                                agentPersInfoModel.chng.prodStatusStatusIcon = "fa fa-ban fa-lg";
                                agentPersInfoModel.chng.prodStatusInfoIcon = " fa fa-lg fa-alert ";
                                agentPersInfoModel.chng.inclTermDate = false;
                                console.log("============= in the listner  (history)=====================");
                                console.log("we didnt match");
                                console.log("agentPersInfoModel.chng.prodStatusInfoIcon");
                                console.log(agentPersInfoModel.chng.prodStatusInfoIcon);
                                console.log("agentPersInfoModel.chng.prodStatusStatusIcon");
                                console.log(agentPersInfoModel.chng.prodStatusStatusIcon);
                                console.log("agentPersInfoModel.chng.prodStatusTextColor");
                                console.log(agentPersInfoModel.chng.prodStatusTextColor);
                                console.log("agentPersInfoModel.chng.inclTermDate");
                                console.log(agentPersInfoModel.chng.inclTermDate);
                                console.log("==================================");
                            }
                        }
                    }
                },
                controller: /*@ngInject*/function($scope, AgentPersInfoModel) {
                    $scope.switchTermColors = function (status) {

                    };
                }
            }
agentModel prod status
agentPersonalInfoFormly-service.js:221 Inactive 
============= in the listner (history) =====================
agentPersonalInfoFormly-service.js:245 we are inactive
agentPersInfoModel.chng.prodStatusInfoIcon
agentPersonalInfoFormly-service.js:247  fa fa-lg fa-alert 
agentPersInfoModel.chng.prodStatusStatusIcon
agentPersonalInfoFormly-service.js:249 fa fa-ban fa-lg
agentPersInfoModel.chng.prodStatusTextColor
agentPersonalInfoFormly-service.js:251 text-warning
agentPersInfoModel.chng.inclTermDate
agentPersonalInfoFormly-service.js:253 false
控制台。日志:

formlyConfig.setType({
    name: 'prodStatus',
    template: "<label class='control-label'>Production Status</label><br><span class='{{prodStatusTextColor}}'><i class='{{prodStatusStatusIcon}}'></i> &nbsp;&nbsp; <span class='{{prodStatusTextColor}}'>{{model[options.key]}}</span> &nbsp;&nbsp; <!--i class='{{prodStatusInfoIcon}}'></i--></span>"
});
//term date
formlyConfig.setType({
    name: 'termDate',
    template: "<div data-ng-show='inclTermDate'><label class='control-label text-danger'>Termination Date</label><i class=fa fa-lg fa-calendar-times-o></i> <span class='text-danger'> &nbsp;&nbsp; {{model[options.key] | date:'yyyy-MM-dd'}} &nbsp;&nbsp; </span></div>"
});
<div formly-field="" ng-repeat="field in fields " ng-if="!field.hide"
class="formly-field ng-scope ng-isolate-scope col-sm-6 col-lg-3 col-md-4
formly-field-prodStatus" options="field" model="field.model || model" fields="fields" form="theFormlyForm" form-id="formly_10" form-
state="options.formState" index="$index"><label class="control-label ng-scope">Production Status</label><br class="ng-scope"><span class=""><i class="">
</i> &nbsp;&nbsp; <span class="">Inactive</span> &nbsp;&nbsp; <!--i 
class='{{prodStatusInfoIcon}}'></i--></span></div>
<label class="control-label ng-scope">Production Status</label><br class="ng-scope">
<span class=""><i class=""></i> &nbsp;&nbsp; <span class="">Inactive</span> &nbsp;&nbsp; <!--i class='{{prodStatusInfoIcon}}'></i--></span></div>
{
                className: 'col-sm-6 col-lg-3 col-md-4',
                key: 'AGENT_LNAME',
                type: 'input',
                templateOptions: {
                    type: 'text',
                    label: 'Last Name',
                    placeholder: 'Agent Last Name'
                },
                expressionProperties: {
                    'templateOptions.tabindex': '4' 
                },
                watcher: {
                    expression: function(field, scope) {
                        return field.formControl && field.formControl.$viewValue;
                    },
                    listener: function(field, newValue, oldValue, scope, stopWatching) {
                        agentPersInfoModel.chng = {
                            prodStatusTextColor: "text-success",
                            prodStatusStatusIcon: "fa fa-lg fa-check-circle-o fa-lg",
                            prodStatusInfoIcon: "fa fa-lg fa-info-circle",
                            isActiveStatus : false,
                            inclTermDate : false
                        };
                        scope.prodStatusTextColor = agentPersInfoModel.chng.prodStatusTextColor;
                        scope.prodStatusStatusIcon = agentPersInfoModel.chng.prodStatusStatusIcon;
                        scope.prodStatusInfoIcon = agentPersInfoModel.chng.prodStatusInfoIcon;
                        scope.inclTermDate = agentPersInfoModel.chng.inclTermDate;
                        scope.isActiveStatus = agentPersInfoModel.chng.isActiveStatus;
                        if(newValue) {
                            console.log('Function Expression: ' + newValue);
                            console.log('Field: ');
                            console.log(field);
                            console.log('oldValue: ' + oldValue);
                            console.log(oldValue);
                            console.log('Scope: ');
                            console.log(scope);
                            console.log("agentPersInfoModel.chng");
                            console.log(agentPersInfoModel.chng);
                            console.log("agentModel prod status");
                            console.log(agentModel.singleAgent.PRODUCTION_STATUS);
                            if(agentModel.singleAgent.PRODUCTION_STATUS === 'Active' && agentModel.singleAgent.TERMINATION_DATE === "00010101") {
                                agentPersInfoModel.chng.isActiveStatus = true;
                                agentPersInfoModel.chng.prodStatusTextColor = "text-success";
                                agentPersInfoModel.chng.prodStatusStatusIcon = "fa fa-lg fa-check-circle-o fa-lg";
                                agentPersInfoModel.chng.prodStatusInfoIcon = "fa fa-lg fa-info-circle";
                                agentPersInfoModel.chng.inclTermDate = false;
                                console.log("============= in the listner (history) =====================");
                                console.log("we are active");
                                console.log("agentPersInfoModel.chng.prodStatusInfoIcon");
                                console.log(agentPersInfoModel.chng.prodStatusInfoIcon);
                                console.log("agentPersInfoModel.chng.prodStatusStatusIcon");
                                console.log(agentPersInfoModel.chng.prodStatusStatusIcon);
                                console.log("agentPersInfoModel.chng.prodStatusTextColor");
                                console.log(agentPersInfoModel.chng.prodStatusTextColor);
                                console.log("agentPersInfoModel.chng.inclTermDate");
                                console.log(agentPersInfoModel.chng.inclTermDate);
                                console.log("==================================");
                            } else if(agentModel.singleAgent.PRODUCTION_STATUS === 'Inactive') {
                                agentPersInfoModel.chng.prodStatusTextColor = "text-warning";
                                agentPersInfoModel.chng.prodStatusStatusIcon = "fa fa-ban fa-lg";
                                agentPersInfoModel.chng.prodStatusInfoIcon = " fa fa-lg fa-alert ";
                                agentPersInfoModel.chng.inclTermDate = false;
                                console.log("============= in the listner (history) =====================");
                                console.log("we are inactive");
                                console.log("agentPersInfoModel.chng.prodStatusInfoIcon");
                                console.log(agentPersInfoModel.chng.prodStatusInfoIcon);
                                console.log("agentPersInfoModel.chng.prodStatusStatusIcon");
                                console.log(agentPersInfoModel.chng.prodStatusStatusIcon);
                                console.log("agentPersInfoModel.chng.prodStatusTextColor");
                                console.log(agentPersInfoModel.chng.prodStatusTextColor);
                                console.log("agentPersInfoModel.chng.inclTermDate");
                                console.log(agentPersInfoModel.chng.inclTermDate);
                                console.log("==================================");
                            } else if(agentModel.singleAgent.TERMINATION_DATE !== "00010101") {
                                agentPersInfoModel.chng.prodStatusTextColor = "text-danger";
                                agentPersInfoModel.chng.prodStatusStatusIcon = "fa fa-times fa-lg";
                                agentPersInfoModel.chng.prodStatusInfoIcon = " fa fa-lg fa-alert ";
                                agentPersInfoModel.chng.prodStatusCalIcon = " fa fa-lg fa-calendar-times-o ";
                                agentPersInfoModel.chng.inclTermDate = true;
                                console.log("============= in the listner (history) =====================");
                                console.log("we are term'd");
                                console.log("agentPersInfoModel.chng.prodStatusInfoIcon");
                                console.log(agentPersInfoModel.chng.prodStatusInfoIcon);
                                console.log("agentPersInfoModel.chng.prodStatusStatusIcon");
                                console.log(agentPersInfoModel.chng.prodStatusStatusIcon);
                                console.log("agentPersInfoModel.chng.prodStatusTextColor");
                                console.log(agentPersInfoModel.chng.prodStatusTextColor);
                                console.log("agentPersInfoModel.chng.inclTermDate");
                                console.log(agentPersInfoModel.chng.inclTermDate);
                                console.log("==================================");
                            } else {
                                agentPersInfoModel.chng.isActiveStatus = false; 
                                agentPersInfoModel.chng.prodStatusTextColor = "text-warning";
                                agentPersInfoModel.chng.prodStatusStatusIcon = "fa fa-ban fa-lg";
                                agentPersInfoModel.chng.prodStatusInfoIcon = " fa fa-lg fa-alert ";
                                agentPersInfoModel.chng.inclTermDate = false;
                                console.log("============= in the listner  (history)=====================");
                                console.log("we didnt match");
                                console.log("agentPersInfoModel.chng.prodStatusInfoIcon");
                                console.log(agentPersInfoModel.chng.prodStatusInfoIcon);
                                console.log("agentPersInfoModel.chng.prodStatusStatusIcon");
                                console.log(agentPersInfoModel.chng.prodStatusStatusIcon);
                                console.log("agentPersInfoModel.chng.prodStatusTextColor");
                                console.log(agentPersInfoModel.chng.prodStatusTextColor);
                                console.log("agentPersInfoModel.chng.inclTermDate");
                                console.log(agentPersInfoModel.chng.inclTermDate);
                                console.log("==================================");
                            }
                        }
                    }
                },
                controller: /*@ngInject*/function($scope, AgentPersInfoModel) {
                    $scope.switchTermColors = function (status) {

                    };
                }
            }
agentModel prod status
agentPersonalInfoFormly-service.js:221 Inactive 
============= in the listner (history) =====================
agentPersonalInfoFormly-service.js:245 we are inactive
agentPersInfoModel.chng.prodStatusInfoIcon
agentPersonalInfoFormly-service.js:247  fa fa-lg fa-alert 
agentPersInfoModel.chng.prodStatusStatusIcon
agentPersonalInfoFormly-service.js:249 fa fa-ban fa-lg
agentPersInfoModel.chng.prodStatusTextColor
agentPersonalInfoFormly-service.js:251 text-warning
agentPersInfoModel.chng.inclTermDate
agentPersonalInfoFormly-service.js:253 false
history函数只是根据id获取一个新的代理,并将其加载到现有的agentModel中,实际上并不涉及这些函数,如果agentModel更改,这些函数应该会更改

任何讨论或帮助都将不胜感激。

div
中的所有“代码”实际上都位于由
ng repeat=“field in fields”
创建的新子范围中,因此,您在其中使用的任何原语(如prodStatusTextColor)都会被隐藏(它们“隐藏”)复制初始值后的原始变量)

根据角度建议,您应该尝试使用
点表示法(在范围上检查此项):您应该将这些变量封装在对象内,并通过引用使用它们

大概是这样的:

<i class='{{prodStatus.prodStatusInfoIcon}}'></i>
侦听器中,您可能有:

prodStatus = {
 prodStatusTextColor: agentPersInfoModel.chng.prodStatusTextColor,
 prodStatusStatusIcon: agentPersInfoModel.chng.prodStatusStatusIcon,
 prodStatusInfoIcon: agentPersInfoModel.chng.prodStatusInfoIcon,
 inclTermDate: agentPersInfoModel.chng.inclTermDate,
 isActiveStatus: agentPersInfoModel.chng.isActiveStatus
};
视图标记中,您可以这样使用它:

<i class='{{prodStatus.prodStatusInfoIcon}}'></i>
并在标记中使用它:

<i class='{{agentPersInfoModel.prodStatusInfoIcon}}'></i>

希望这有帮助


代码没有经过测试,但应该可以完成这项工作。

谢谢@bosch,我以前尝试过您的代码变体,但运气不佳。我试过你的变体,但我仍然有这个问题。我非常感谢你的帮助。如果你没有意识到的话,这是有角度的形式。此时,我将vars添加到formly用作模型的obj中。还是没什么。但我还是很感激你的努力。