Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.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
Javascript 角双向装订_Javascript_Json_Angularjs_Angularjs Scope - Fatal编程技术网

Javascript 角双向装订

Javascript 角双向装订,javascript,json,angularjs,angularjs-scope,Javascript,Json,Angularjs,Angularjs Scope,我有一个Angular指令,它读取文件的内容并填充表单。当前,它似乎在更新控制器中的$scope变量,但视图中没有更新绑定到那些$scope变量的表单元素。为什么会这样 下面的代码片段如下所示: 我的指令,我使用它从文件读入并调用控制器的$scope['modify_form']],它允许我更新与我的表单对应的$scope变量 我的指令的HTML(视图端) 我的$scope['modify_form']的控制器逻辑,它调用一组助手函数,其中一个如下所示 我的表单视图的HTML片段;这就是根本问题

我有一个
Angular
指令,它读取文件
的内容并填充表单。当前,它似乎在更新控制器中的
$scope
变量,但视图中没有更新绑定到那些
$scope
变量的表单元素。为什么会这样

下面的代码片段如下所示:

  • 我的指令,我使用它从文件
    读入并调用控制器的
    $scope['modify_form']]
    ,它允许我更新与我的表单对应的
    $scope
    变量
  • 我的指令的HTML(视图端)
  • 我的
    $scope['modify_form']
    的控制器逻辑,它调用一组助手函数,其中一个如下所示
  • 我的表单视图的
    HTML
    片段;这就是根本问题所在,因为当我调用
    $scope['modify_form']
  • 以下是我对阅读内容的指示:

    app.directive('modifyBtn',函数($compile){
    返回{
    限制:'E',
    范围:{
    modifyJSON:“&modifyJSON”,
    },
    链接:函数(范围、元素、属性){
    var fileElem=angular.element(element.find(“#file_input2”);
    console.log(fileElem);
    var showUpload=函数(){
    //显示文件输入元素
    var file=fileElem[0]。文件[0];
    var reader=new FileReader();
    reader.readAsText(文件);
    reader.onload=函数(e){
    var-uploadedJSON;
    试一试{
    uploadedJSON=JSON.parse(reader.result);
    }捕获(e){
    //应显示帮助块(或警告)
    返回;
    }
    console.log(uploadedJSON);//@debug
    对于(uploadedJSON中的var键){//只有一个键
    if(uploadedJSON.hasOwnProperty(键)){
    会话存储[模型]=密钥;
    sessionStorage[NAMESPACE]=uploadedJSON[key][NAMESPACE]
    变量字段=[字段、链接、主键、表、SQL、验证];
    fields.forEach(函数(字段){
    if(uploadedJSON[key].hasOwnProperty(字段)){
    sessionStorage[field]=JSON.stringify(uploadedJSON[key][field]);
    }
    });
    //在不重新加载页面的情况下触发修改
    scope.modifyJSON();
    }
    }
    }
    };
    $(fileElem).on('change',showUpload);
    }
    }
    });
    
    指令的我的视图(
    HTML
    )如下所示:

    
    
  • 上传JSON
  • 在我的控制器中,这里是更新绑定到表单的
    $scope
    变量的位置:

    $scope['modifyForm']=function(){//如果读取JSON,则填充元素
    修改_数据();
    修改_字段();
    修改链接();
    修改_pkeys();
    修改_表();
    修改_sql();
    修改_验证();
    sessionStorage.clear();
    }
    函数modify_data(){
    var-total=[模型,名称空间];
    总体。forEach(功能(elem){
    if(存在(会话存储[elem])){
    $scope['data'][elem]=会话存储[elem];
    }
    });
    }
    
    在视图中,我的表单元素是如何绑定的

    
    {{myConstants[“model”]}
    {{myConstants[“namespace”]}
    
    Noah,我喜欢你在这里做一些聪明和鬼鬼祟祟的事情。我知道这听起来很奇怪,但你应该通过开发者控制台查看DOM元素(我建议使用Chrome)。您将看到您将
    ng model
    属性以Angular解释它的方式写在元素上。您应该确保Angular在尝试评估
    ng model
    提供的值时没有阻塞,您甚至可以将
    数据['undefined']
    视为您的
    ng model
    ,但我对此没有保证。如果可以的话,可以通过开发者控制台截图这些元素的样子,并将其包含在这里。我承认我还没有阅读所有的代码。您的
    修改表单
    函数中可能缺少
    $scope.$apply()
    ?只是一种感觉……正如我所看到的,您读取了一个文件,所以这可能是范围的同步问题。在这种情况下,我会使用$q服务。最好的办法是尽可能多地记录($log或console.log,info,console.dir…),看看哪里出了问题。顺便说一句,这真的很有趣,我迫不及待地想告诉我们你是如何解决的。你在这里做了一些聪明和鬼鬼祟祟的事情诺亚,我喜欢。我知道这听起来很奇怪,但是您应该通过开发者控制台查看DOM元素(我建议使用Chrome)。您将看到您将
    ng model
    属性以Angular解释它的方式写在元素上。您应该确保Angular在尝试评估
    ng model
    提供的值时没有阻塞,您甚至可以将
    数据['undefined']
    视为您的
    ng model
    ,但我对此没有保证。如果可以的话,可以通过开发者控制台截图这些元素的样子,并将其包含在这里。我承认我还没有阅读所有的代码。您的
    修改表单
    函数中可能缺少
    $scope.$apply()
    ?只是一种感觉…正如我看到的,你读了一个文件,所以这可能是同步问题