Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.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 使用ng模型预加载复选框_Javascript_Angularjs_Modal Dialog - Fatal编程技术网

Javascript 使用ng模型预加载复选框

Javascript 使用ng模型预加载复选框,javascript,angularjs,modal-dialog,Javascript,Angularjs,Modal Dialog,我试图用一系列复选框构建一个表单,这些复选框表示数据库中两个模型之间的多态关联。我有工作描述和经验级别。该表单用于更新工作描述,并为每个体验级别设置一个复选框。当表单以模式打开时,我希望检查与工作相关的当前经验级别 我一直在努力找出如何使用ng repeat和ng model实现复选框。我的当前代码呈现复选框,但未预先选择正确的复选框 这是我的控制器中的editJob方法: $scope.editJob = function(r) { var experienceLevels = {}

我试图用一系列复选框构建一个表单,这些复选框表示数据库中两个模型之间的多态关联。我有
工作描述
经验级别
。该表单用于更新
工作描述
,并为每个
体验级别
设置一个复选框。当表单以模式打开时,我希望检查与工作相关的当前经验级别

我一直在努力找出如何使用
ng repeat
ng model
实现复选框。我的当前代码呈现复选框,但未预先选择正确的复选框

这是我的控制器中的
editJob
方法:

$scope.editJob = function(r) {

    var experienceLevels = {};

    r.experience_levels.map(function(r, i){
        experienceLevels[i] = r.name;
    });
    $scope.experienceLevels = experienceLevels;

    $scope.id = r.id;
    $scope.title = r.title;
    $scope.jobFunction = r.role;
    $scope.description = r.description;
    $scope.postingLink = r.posting_link;
    $scope.company = r.company_name;

    var modalInstance = $modal.open({
        templateUrl: '/assets/admin/editjob.html',
        controller: ModalInstanceCtrl,
        scope: $scope,
        resolve: {
            jobForm: function () {
                return $scope.jobForm;
            }
        }
    });
};
这是我表格中带有复选框的部分:

<div class="form-group">
    <label>Experience Level</label>
    <div ng-repeat="experienceLevel in expItems">
        <input type="checkbox" name="experienceLevel.display" 
               ng-model="job.experienceLevels['experienceLevels']" 
               ng-true-value="experienceLevel">
        {{experienceLevel.display}}
    </div>
</div>

经验水平
{{experienceLevel.display}

我仍然不知道如何预先选择复选框。他们似乎不受模型的约束。

我找到了解决问题的方法。我不知道这是否是一个好的实践(希望得到反馈),但它似乎按照我想要的方式工作

在我的控制器中,我现在预先分配体验级别,如下所示:

$scope.editJob = function(r) {
    var experienceLevels = {};

    r.experience_levels.map(function(r){
        experienceLevels[r.name] = "true";
    });
在我的表单上,我决定绑定到
experienceLevel.display
,而不是
experienceLevel.key
,如下所示:

<label>Experience Level</label>
<div ng-repeat="experienceLevel in expItems">
    <input type="checkbox" name="experienceLevel.display" ng-model="job.experienceLevels[experienceLevel.display]" ng-true-value="true" ng-false-value="false">
    {{experienceLevel.display}}
</div>

然后,我可以在Rails控制器中按名称查找
ExperienceLevel

我们能看到HTML吗?我认为您的问题可能不涉及服务器对象,而只涉及Javascript和HTML。我只是用呈现的HTMLOk编辑了我的问题,因为您已经解决了部分问题,所以我将编辑该问题,以仅包含与剩余问题相关的信息。好的,我编辑了该问题。如果我把事情弄糟了,请把它修好。作为将来的参考,没有必要在文章中包含“更新”。任何想要查看更新的人都将查看修订历史记录。
{
    "id"=>"23",
    "title"=>"Ruby Ninja",
    "jobFunction"=>"Customer Support",
    "description"=>"Awesomesauce!",
    "postingLink"=>"http://www.google.com/",
    "experienceLevels"=>{
        "Entry Level"=>"false", "Manager"=>"true"
    },
    "company"=>"Ice 2 Go",
    "action"=>"update",
    "controller"=>"admin/job_descriptions",
    "job_description"=>{
        "id"=>23, "title"=>"Ruby Ninja", "description"=>"Awesomesauce!"
    }
}