Javascript 我的AngularJS模型仅在我的按钮被单击两次时更新

Javascript 我的AngularJS模型仅在我的按钮被单击两次时更新,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我有一个选择列表框和一个按钮。根据按钮selectId,我必须过滤显示在选择列表框中的模型 这里的问题是,仅当我单击此按钮两次时,模型才会更新。我在GetFormsClicked中有一个过滤器函数,它具有与此相关的逻辑 我的角度控制器如下所示: (函数(){ var controllerId='GroupsController'; ig.app.controller(controllerId、['$scope','$log','$http','$compile','fileRvwQuestSvc

我有一个选择列表框和一个按钮。根据按钮
selectId
,我必须过滤显示在选择列表框中的模型

这里的问题是,仅当我单击此按钮两次时,模型才会更新。我在
GetFormsClicked
中有一个过滤器函数,它具有与此相关的逻辑

我的角度控制器如下所示:

(函数(){
var controllerId='GroupsController';
ig.app.controller(controllerId、['$scope','$log','$http','$compile','fileRvwQuestSvc','DataSvc',',
函数($scope、$log、$http、$compile、fileRvwQuestSvc、DataSvc){
$scope.FrequencyMap={
1:“年度”,
2:“每月”,
3:“半年”
};
$scope.FormMap={
1:“CMSMISC”,
2:“CMSFPEA”,
3:“CMSPIID”,
5:“CMSMSR”,
7:“CMSCOI”
}
$scope.GetAllGroupForms=函数(Id){
var url='/GroupForm/Details/'+Id;
$scope.loading=true;
DataSvc.getAjaxData(url)
.then(功能(数据){
//成功
$scope.GroupForm=data.data;
$scope.GroupFormBack=data.data;
$scope.loading=false;
},功能(httpStatus){
//失败
$scope.hasErrors=true;
如果(httpStatus==404){
$scope.errorMessage=“无法检索用户信息”;
}否则{
$scope.errorMessage='系统无法处理您的请求,请重试或与系统管理员联系';
}
$log.warn(httpStatus);
$scope.loading=false;
});
};
$scope.availableFormsTestOriginal=[
{
“Id”:空,
“GroupId”:空,
“FormId”:1,
“SortOrder”:空,
“频率”:1,
“IsCollapsed”:错误,
“IsDeleted”:错误
},
{
“Id”:空,
“GroupId”:空,
"FormId":2,,
“SortOrder”:空,
“频率”:1,
“IsCollapsed”:错误,
“IsDeleted”:错误
},
{
“Id”:空,
“GroupId”:空,
“FormId”:3,
“SortOrder”:空,
“频率”:1,
“IsCollapsed”:错误,
“IsDeleted”:错误
}
]
var AddGroupForm=函数(){
$scope.loading=true;
var url='/GroupForm/Create/';
DataSvc.AddFormData(url$scope.GroupForm)
.then(功能(数据){
//成功
$scope.loading=false;
//$scope.successage=“表单保存成功”;
$scope.successage=“GroupForm已成功更新”;
},功能(httpStatus){
//失败
$scope.hasErrors=true;
如果(httpStatus==404){
$scope.errorMessage=“无法检索用户信息”;
}否则{
$scope.errorMessage='系统无法处理您的请求,请重试或与系统管理员联系';
}
$log.warn(httpStatus);
$scope.loading=false;
});
}
$scope.filterailableforms=函数(){
对于(i=0;i<$scope.availableFormsTest.length;i++){
对于(j=0;j<$scope.GroupForm.length;j++){
如果($scope.availableFormsTest[i]。FormId==$scope.GroupForm[j]。FormId&&$scope.availableFormsTest[i]。频率===$scope.GroupForm[j]。频率){
$scope.可用于预制钢接头(i,1);
}
}
}
}
激活();
$scope.GetFormsClicked=函数(selectid){
$scope.availableFormsTest=angular.copy($scope.availableFormsTestOriginal);
$scope.GetAllGroupForms(selectid);
$scope.updateavailableforms(selectid);
$scope.filterailableforms();
}
函数激活(){
$scope.loading=false;
$scope.GetAllGroup();
}
}
]);
})();
我的查看代码如下:

选择组`
我的数据集代码:

ig.app.factory('DataSvc', [
'$http', '$q', '$log',
function ($http, $q, $log) {
    return {
        getAjaxData: function (CtrlUrl) {
            var deferred = $q.defer();
            var rnd = ((Math.random() * 1000000) + 1);
            $http({
                method: 'GET',
                url: CtrlUrl + "/?r=" + rnd
            })
            .then(function (data, status, headers, config) {
                deferred.resolve(data, status, headers, config);
            },
            function (data, status, headers, config) {
                $log.warn(data, status, headers(), config);
                deferred.reject(status);
            });
            return deferred.promise;
        },
        AddFormData: function (CtrlUrl, model) {
            var deferred = $q.defer();
            $http.post(CtrlUrl, model).then(function (data, status, headers, config) {
                deferred.resolve(data, status, headers, config);
            },function (data, status, headers, config) {
                $log.warn(data, status, headers(), config);
                deferred.reject(status);
            });
            return deferred.promise;
        },
        UpdateFormData: function (CtrlUrl, model) {
        var deferred = $q.defer();
        $http.post(CtrlUrl, model).then(function (data, status, headers, config) {
            deferred.resolve(data, status, headers, config);
        },function (data, status, headers, config) {
            $log.warn(data, status, headers(), config);
            deferred.reject(status);
        });
        return deferred.promise;
    }
    }
}]);

您的问题是由于使用了
ng model=“variable”

规则是“在您的ng模型中始终有一个点”,您应该有一个带有正确obj的
ng model=“obj.variable”

原因是每个具有
scope:true
的指令都继承父范围,并且您正在编辑的“变量”不会复制回父范围

问题是由于字符串是按值复制的。
通过使用对象,所有作用域都将引用同一个变量

谢谢。你能给我举个例子怎么做这个改变吗?你说正确的obj是什么意思?我应该使用obj.available吗?我尝试过这种方法。但还是不为我工作。啊!您的ajax调用是用jquery还是$http编写的?如果使用jquery,则需要使用范围$应用以强制更新。它是$http。谢谢你能告诉我们你的服务代码吗?有一个回调未包含在作用域中。$apply我确信有人请帮忙