将值传递给ng-model的指令。-angularjs

13 浏览
0 Comments

将值传递给ng-model的指令。-angularjs

嗨,我正在尝试创建一个指令来传递一些值给我的ng-model,在我的指令中,我有一个控制器,并且我想将它的值传递给我的ng-model。假设我有一个字符串值,当我点击$scope.speakUP时,它应该传递给ng-model。

这是我的指令代码:

.directive('speak', function(){

return {

restrict: 'A',

require: 'ngModel',

scope: true,

template: '',

controller: function($scope, $element){

$scope.speakUP = function(){

$scope.passThisString = "样本数据";

}

}

}

这是我的HTML代码:

0
0 Comments

在这个例子中,问题的原因是在指令中传递值给ng-model时出现了错误。解决方法是在指令的link函数中正确设置ngModel的值。

首先,在指令中,我们定义了一个叫做"inputField"的指令。在该指令中,我们使用了ngModel指令来获取ng-model的值,并根据这个值来进行操作。但是,在这个例子中,我们没有正确地将值传递给ngModel。

解决这个问题的方法是在指令的link函数中正确设置ngModel的值。具体来说,我们需要在指令的speakUP函数中使用ngModel.$setViewValue方法来设置ngModel的值。然后,在ngModel.$render函数中,我们将ngModel的值赋给$scope.value。这样,我们就能够正确地将值传递给ngModel。

在HTML中,我们使用了这个指令,并将ng-model设置为sampleModel。这样,我们就能够正确地将值传递给ng-model。

通过在指令的link函数中正确设置ngModel的值,我们就能够解决将值传递给ng-model的问题。下面是整理后的代码:

app.directive('inputField', function () {
    return {
        require: '?ngModel',
        template: 'click',
        link: function ($scope, $element, $attrs, ngModel) {
            if (!ngModel) return;
            $scope.speakUP = function(){
              ngModel.$setViewValue('your data');
              ngModel.$render(); 
            }
            $scope.onChange = function() {
              ngModel.$setViewValue($scope.value);
            };
            ngModel.$render = function() {
              $scope.value = ngModel.$modelValue;
            };
        }
    };
});

HTML


通过以上的修改,我们就能够正确地将值传递给ng-model了。

0