我想从不同的指令中读取初始值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)
我真的很感激任何帮助。
答案 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了解详情