3

我想从不同的指令中读取初始值 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

4 回答 4

7

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

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

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

确实有效!耶皮耶!

于 2013-08-28T08:24:43.763 回答
2

无需观看,ng-init 很糟糕。就像是..

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

           }
        };

这里value将给出模型中的初始边界值。

于 2015-06-24T04:39:41.540 回答
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);
            }
于 2016-02-29T08:50:54.577 回答
0

如果你想在指令中使用 HTML 中的一些值,你应该使用 ngInit。它看起来像

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

我遇到了同样的问题,结果证明我所做的不是 Angular 方式。检查此链接以获取更多详细信息

于 2013-08-28T07:19:28.770 回答