javascript - AngularJS - 在模板中注入(inject)变量

标签 javascript angularjs angularjs-directive

这似乎是一个简单的问题,但在使用 Angular 几个月后,我仍在寻找一种干净的方法来实现它。

我的模板 myTimePicker.html 是在指令中定义的,所以我得到了

<myTimePicker></myTimePicker>

在我的模板中,我有一个“pickedTime”对象

我需要拾取 3 个不同的时间,但我不想为相同的代码编写 3 个模板(显然..)。我希望将其定义为函数的变量,例如:

<myTimePicker ng-***="pickedTime1 as pickedTime" ></myTimePicker>
<myTimePicker ng-***="pickedTime2 as pickedTime" ></myTimePicker>
<myTimePicker ng-***="pickedTime3 as pickedTime" ></myTimePicker>

当你编写时,这在 ng-repeat 中完美运行

ng-repeat="item in items"

您可以对不同的项目使用相同的模板,但每个项目内部都有不同的变量值。

ng-init 不是解决方案,因为在这种情况下:

<myTimePicker ng-init="pickedTime = pickedTime1"></myTimePicker>
<myTimePicker ng-init="pickedTime = pickedTime2"></myTimePicker>
...

pickedTime = pickedTime1 = pickedTime2 并且他们得到了相同的值 pickedTime2

希望我的理解很清楚,谢谢您的帮助!

最佳答案

使用自定义属性并将其与隔离范围结合使用:

<myTimePicker pickedTime="pickedTime1"></myTimePicker>
<myTimePicker pickedTime="pickedTime2"></myTimePicker>
<myTimePicker pickedTime="pickedTime3"></myTimePicker>

scope: {
    pickedTime: '='
}

这样您就可以使用 pickedTime 属性将 Controller 作用域变量注入(inject)到指令中。

<小时/>

这是一个使用字符串而不是实时的简单示例:

angular.module('myApp', [])
  .controller('Ctrl', ['$scope',
    function($scope) {
      $scope.pickedTime1 = 'First time';
      $scope.pickedTime2 = 'Second time';
      $scope.pickedTime3 = 'Third time';
    }
  ])
  .directive('myTimePicker', function() {
    return {
      template: '<p>{{pickedTime}}</p>',
      restrict: 'E',
      scope: {
        pickedTime: '='
      }
    }
  });
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myApp" ng-controller="Ctrl">
  <my-time-picker picked-time="pickedTime1">1</my-time-picker>
  <my-time-picker picked-time="pickedTime2">2</my-time-picker>
  <my-time-picker picked-time="pickedTime3">3</my-time-picker>
</div>

关于javascript - AngularJS - 在模板中注入(inject)变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28252545/

相关文章:

javascript - 我试图显示圆的属性值,但它不起作用

javascript - AngularJS中具有多个参数的查询字符串

angularjs - 在 Angular 1.5 组件中运行 ES6 构造函数

javascript - AngularJS - 从 Controller 调用特定指令函数/方法

javascript - 画廊中的 Phonegap 图像选择器无法正常工作

javascript - 在数组中循环遍历数组中的值。输出所有组合

javascript - SOS,$scope 不适用于 algular js

java - 在 selenium 测试中遇到 ng 选择框的问题

javascript - AngularJs Radiobox 组验证

javascript - Angular Directive(指令)关注/取消关注按钮