【问题标题】:AngularJs passing parameter values to controllerAngularJs将参数值传递给控制器
【发布时间】:2017-01-09 15:56:41
【问题描述】:

我的 HTML:

<test-app email="hello@hotmail.com"></test-app>

我的指令:

.directive('testApp', function () {
return {
    restrict: 'E',
    scope: {
        userEmail = '@userEmail'
    },
    templateUrl: 'Form.html'
};
})

我在另一个页面中的表单:

<label> Email </label>
<input type="text" id="email">

问题:我需要获取参数值,并将其打印在文本框本身上。

我做了什么:我研究了很多关于如何将指令参数传递给控制器​​的文章,但它们非常复杂。

我认为下一步是什么:

1) 将指令参数传递给控制器​​,然后将控制器绑定到文本框,并将文本框的值设置为参数值。

2) 或者还有其他方法可以做到这一点吗?

我不知道如何继续。

【问题讨论】:

  • 首先尝试遵循指令命名约定(camelCase),例如:指令名称makeBold然后在模板中使用它如:&lt;make-bold ...&gt; &lt;/make-bold&gt;
  • @AvneshShakya 已编辑。但这无助于开始。有什么提示可以继续吗?
  • 您想要指令中的email 值,对吗?所以试试这个:scope: { userEmail: '@email'}, 并在你的模板中:&lt;input type="text" ng-model="userEmail" id="email"&gt; 详细检查隔离范围here
  • 我希望将电子邮件值放入指令然后发送到控制器。因为我需要将值打印到输入文本框@AvneshShakya
  • 你会得到的,请参阅我上面的评论 :)

标签: javascript angularjs angularjs-directive controller


【解决方案1】:

您可以通过@ 使用属性字符串绑定

  1. 控制器中初始化你的userEmail变量

  2. 指令有一个user-email属性,可以将值加载到指令的userEmail局部范围变量中。

  3. 使用userEmail:'@' 允许字符串绑定从控制器到指令。

请看下面的演示:

angular.module("app",[]).directive('application', function() {
  return {
    restrict: 'E',
    scope: {
      userEmail : '@'
    },
    templateUrl: 'Form.html'
  };
}).controller("ctrl",function($scope){
  $scope.userEmail="hello@hotmail.com";
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div ng-app="app" ng-controller="ctrl">
  <application user-email="{{userEmail}}"></application>
  <script type="text/ng-template" id="Form.html">
    <label>Email</label>
    <input type="text" id="email" ng-model="userEmail">
  </script>
</div>

【讨论】:

  • 你的答案有点接近。但我想要用户可能直接输入的指令中的值,例如:。我希望将“test@hotmail.com”插入表单的文本框
  • @JohnTan 好吧,我不确定你在找什么,你可以使用&lt;application user-email="test@hotmail.com"&gt;&lt;/application&gt; ?
  • @JohnTan 只是跟进这个问题 - 所以你设法解决了这个问题?如果这个答案有帮助,请投票/接受,谢谢!
  • 嗨!对不起。我没有设法解决这个问题。是否有可能用另一种方式做到这一点?我认为这是因为我的应用程序结构,因为我有一些 templateUrl,它不能直接传递给控制器​​
猜你喜欢
  • 2015-09-13
  • 2016-05-08
  • 1970-01-01
  • 1970-01-01
  • 2018-07-14
  • 2020-06-12
  • 2016-04-25
  • 1970-01-01
相关资源
最近更新 更多