如何使用Angular.js将值传递给指令隔离范围

时间:2017-09-04 12:17:45

标签: javascript angularjs angularjs-directive

我需要使用Angular.js将值从数组传递到指令范围。我的代码如下所示。

的test.html:

imState = imState.update(
  ['app', 'line', 'series'],
  series => series.map(s => s.update('color', color => "#1bf115"))
)

test.js:

<html><head>
<!--music_append_class-->
<script src="js/angular.min.js"></script>
<script src="test.js"></script>
</head>
<body ng-app="formComponents">
    <form-input label="Name" form-id="nameInput">
      <input type="text" name="ind" id="ind" ng-model="index">
      <button type="button"  id="btn" ng-click="playAudio(index);">Play</button>
    </form-input>
</body>
</html>

数组中存在mp3列表,我的要求是用户只在文本字段中输入索引值并单击播放按钮。该索引值将与该mp3数组列表匹配,并且该特定轨道将播放。我需要使用该指令。

1 个答案:

答案 0 :(得分:0)

你必须创建一个html属性来将你的数组传递给你的指令,这是一个例子:

形状input.directive.js:

app.directive('formInput', function() {
    return {
        restrict: 'E',
        scope: {
            mp3Track: '='
        },
        controller: formInputCtrl,
        transclude: true,
        templateUrl: './form-input.html'
    };
});

formInputCtrl.$inject = ['$scope'];

function formInputCtrl($scope) {
    $scope.playAudio(index) = playAudio;

    function playAudio(index) {
        var track = $scope.mp3Track[index];

        // DO OTHER STUFF WITH THE TRACK
    }
}

形状input.html:

<div class="audio-input" ng-transclude>
    // input and button will be inserted here by angularjs
</div>

的index.html:

<form-input label="Name" form-id="nameInput" mp3-track="mp3Array">
  <input type="text" name="ind" id="ind" ng-model="index">
  <button type="button"  id="btn" ng-click="playAudio(index);">Play</button>
</form-input>

mp3Array是一个数组,其中包含你的html页面控制器中定义的mp3曲目。

这是angularjs指令文档,您可以找到隔离范围使用的另一个示例。