0

我是 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();

              }


          });
        });
      }
   }

 });

我对此感到很困惑,任何人的想法?

4

1 回答 1

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 上看到一个例子会更容易理解),所以这是我能给你的所有帮助。我希望它有用。

于 2013-08-19T06:05:33.350 回答