2013-08-18 61 views
0

我是新手與AngularJs和,複選框設置模型值不變

我特林讓與$資源形式的項目,

我沒有anyideas得到多個複選框值,並將其設置

來模型,但有一個錯誤顯示我的複選框的值爲空從

服務?

這裏是我的代碼

<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

你可以把一個jsfiddle或plunker放在一起嗎?我對你想做什麼感到困惑。 –

+0

你想讓你的指令完成什麼? – Galdo

+0

我正在做形式,並獲得形式價值服務 – user2680731

回答

0

您的代碼可能存在其他問題,而不是我要指出的問題,但我注意到的一個錯誤是您不應該在link函數中使用elm.bind('click', ...)。您的代碼編寫方式只有在單擊元素後才能設置,但您確實希望腕錶從頭開始設置。

link函數內部運行scope.$watch函數,沒有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上看到一個例子會更容易理解),所以這是我可以給你的所有幫助。我希望這是有用的。