AngularJS:从不同的指令读取ngModel。$ viewValue的初始值

时间:2013-08-27 06:25:58

标签: angularjs angularjs-directive

我想从不同的指令中读取初始值ngModel。$ viewValue。

# coffee script
app.directive 'directive', -> 
  return {
      require: '?ngModel',
      link: (scope, element, attrs, ngModelCtrl) ->
      ........
           console.log(ngModelCtrl.$viewValue) # does give NaN!

           ngModelCtrl.$setViewValue('something'); # only after setting reading does work
           console.log(ngModelCtrl.$viewValue)

我真的很感激任何帮助。

4 个答案:

答案 0 :(得分:7)

我自己修好了......愚蠢:))

    link: (scope, element, attrs, ngModelCtrl) ->

        scope.$watch(ngModelCtrl, ->
          console.log(ngModelCtrl.$viewValue)
        )

确实有效! yippieh!

答案 1 :(得分:2)

无需观看,ng-init很糟糕。像...这样的东西。

      return {
          require: 'ngModel',
          link: function(scope, element, attrs, ngModel) {
                var getter = $parse(attrs.ngModel);
                var value = getter(scope);

           }
        };

此处value将在模型中给出初始绑定值。

答案 2 :(得分:1)

将你的行动置于$ timeout之内...就像你使用$ apply一样,所以你的代码将在$ digest完成它的过程之后运行...

像这样:

link: function (scope, el, attr, ctrl) { //Ctrl will bind to required ones
                //ctrl[0] -> ngModel
                $timeout(function() {
                    scope.parentId = ctrl[0].$viewValue;
                    scope.startUp();
                }, 0);
            }

答案 3 :(得分:0)

如果您想在指令中使用HTML中的某些值,则应使用ngInit。它看起来像

<div directive ng-init="variable='value'"></div>

我遇到了同样的问题,事实证明我所做的并不是一种Angular方式。查看此link了解详情