当前位置: 首页 > 面试题库 >

将值从指令传递到控制器

穆单鹗
2023-03-14
问题内容

以下是我的html模板:

<div ng-app="dr" ng-controller="testCtrl">
    <test color1="color1" data-method="ctrlFn(msg)"></test>    
</div>

下面是我的代码:

var app = angular.module('dr', []);

app.controller("testCtrl", function($scope) {
    $scope.ctrlFn = function(arg) {        
        alert(arg);
    }

});
app.directive('test', function() {
    return {
        restrict: 'E',
        scope: {
            fromDirectiveFn: '&method'
        },
        link: function(scope, elm, attrs) {
            //Way One
            scope.hello = "some message";
            scope.fromDirectiveFn(scope.hello);
        }
    }
});

<div ng-app="dr" ng-controller="testCtrl">
    <test color1="color1" data-method="ctrlFn(msg)"></test>    
</div>

为什么我会收到“ 未定义 ”而不是“ 某些消息

下面是一个小提琴 http://jsfiddle.net/j2K7N/27/


问题答案:

您的代码几乎是正确的,但是这里有几个问题:

<test color1="color1" data-method="ctrlFn(msg)"></test>

在这里,您ctrlFn()从控制器传递函数,该函数msg带有一个未定义的参数,该参数会导致警报消息带有“未定义”文本。我建议将HTML代码修改为:

<test color1="color1" data-method="ctrlFn"></test>

请注意,我将传递ctrlFn为变量而不是函数。

在您的指令代码中,我更改了范围绑定以=确保ctrlFn它将指向您的控制器功能。这还将在指令的作用域和控制器(父)作用域之间建立双向绑定。然后,该指令的整个JS代码将如下所示:

app.directive('test', function() {
    return {
        restrict: 'E',
        scope: {
            fromDirectiveFn: '=method'
        },
        link: function(scope, elm, attrs) {
            //Way One
            scope.hello = "some message";
            scope.fromDirectiveFn(scope.hello);
        }
    }
});

只需替换为&即可=。工作叉:http :
//jsfiddle.net/L8masomq/



 类似资料:
  • 问题内容: 我想要的是将txtComments的值从View(使用jquery / ajax)传递给Controller。 问题是ajax / jquery不接受脚本标签作为字符串。意思是,当我在txtComments中输入任何脚本/ html标记时,ajax会进入错误功能,而无法进入控制器。 这是jQuery: 这是控制器: 我也试过了逃脱(注释),但是还是一样。 问题答案: 尝试使用该功能的选

  • 我是JavaFx新手,因此我找不到解决问题的方法 假设我有以下应用程序结构: 在SecondController中显示文本的最佳/最佳方式是什么,从FirstController传递文本。我的意思是,我在中输入一个文本,然后按下按钮,按下按钮后,我希望文本显示在使用另一个控制器的中。我已经阅读了很多关于和可以用来解决这个问题的知识,但不幸的是,我无法实现一个有效的解决方案。 如果你们专家能在这方面

  • 问题内容: 将AngularJS范围变量从指令传递到控制器的最简单方法是什么?我所看到的所有示例似乎都很复杂,难道没有一种方法可以从指令访问控制器并设置其作用域变量之一吗? 问题答案: 于2014/8/25编辑: 这是我分叉的地方。 谢谢@anvarik。 这是JSFiddle。我忘了我在哪里分叉。但这是一个很好的示例,向您展示了=和@之间的区别

  • 我做了逻辑包,但是UI仍然有问题。我想做的是允许用户输入作业数量,在下一个窗口中,我想显示文本字段,他可以在其中输入每个作业的执行时间,换句话说,我应该显示文本字段n time,作为用户给定的作业数量。 这是我为第一个界面所做的: 这是我的控制器: 我不知道是否有方法将参数从控制器传递到FXML文件,并在FXML中执行循环。。请帮忙

  • 我正在javascript上对消息进行加密和解密,并希望将结果消息发送到Spring控制器mvc。 因此,令牌应该保存来自javascript的值。我没有使用jquery。如何将javascript中的值传递给Spring mvc控制器。 我想在java控制器类中使用这个变量(即encryptedFinally)。