复选框设置模型值不变

时间:2013-08-18 12:20:44

标签: angularjs

我是AngularJs的新手,

我想用$ resource创建一个表单项目,

我没有任何获得多个复选框值并设置它

要建模,但是我的复选框的值显示为

为空的错误显示

服务?

这是我的代码

<dd ng-repeat="user in User.user" >
  <input name="userName[user.userId][]" type="checkbox" ng-model="newProgram.program.managerId" 
    value="{{user.userId}}" check="model" />
    {{user.userUsername}}
</dd>


angular.module('elnApp')
  .directive('check', function () {
  return {
    require: 'ngModel',
    scope: { model: '=check', value: '@' },
    link: function(scope, elm, attr, ngModelCtrl, $filter){ 
        elm.bind('click', function() {
          scope.$watch('newProgram.program.managerId', function (value){
              if(value == true){
                var checkValue = scope.value;
                var brands = [];
                brands.push(checkValue);
                ngModelCtrl.$setViewValue(brands);
                scope.$apply();

              }


          });
        });
      }
   }

 });

我对此感到困惑,有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您的代码可能存在其他问题,而不是我要指出的问题,但我注意到的一个错误是您不应该在elm.bind('click', ...)函数中使用link。编写代码的方式,只有在单击元素之后才会设置手表,但您确实希望手表从一开始就设置好。

只需从您的scope.$watch功能中运行link,而不是elm.bind,您应该会看到一些改进。换句话说,您的链接功能应如下所示:

link: function(scope, elm, attr, ngModelCtrl, $filter) { 
        scope.$watch('newProgram.program.managerId', function (value) {
          if (value == true) {
            var checkValue = scope.value;
            var brands = [];
            brands.push(checkValue);
            ngModelCtrl.$setViewValue(brands);
            scope.$apply();
          }
        });
      });

我不完全理解你想要做的其他事情(“获得表格价值服务”对我来说真的不是很清楚 - 看到关于jsfiddle或plunker的例子会更容易理解),所以这是我能给你的所有帮助。我希望它有用。