簡體   English   中英

Angular.js-將指令綁定到控制器中的變量

[英]Angular.js - binding a directive to a variable in the controller

我想將指令綁定到控制器中的變量,但無法從Angular.js文檔中找到如何執行的指令(也不能在網上搜索,也不能看雞蛋頭的視頻)。

我有以下html:

<body ng-app="MyApp">

    <div ng-controller="triCtrl">

        <div jqslider pleaseBindTo="firstValue"></div>
        <br>
        <br>
        <br>
        <br>
        <div jqslider pleaseBindTo="secondValue"></div>

        <p>{{firstValue.v}}</p>
        <p>{{secondValue.v}}</p>
    </div>

</body>

和下面的JS:

function triCtrl($scope) {
    $scope.firstValue = {"min":0, "max":100, "v":50};
    $scope.secondValue = {"min":0, "max":1000, "v":450};
}


var myAppModule = angular.module('MyApp', []);

myAppModule.directive('jqslider', function() {
    return {
        link:function(scope, element, attrs) {
            element.slider({
                range: false,
                min: scope.min,
                max: scope.max,
                value: scope.v,
                slide: function( event, ui ) {
                    scope.v = ui.value;
                    scope.$apply();
                }
            });
        }
    };
 });

我已經嘗試了幾種使用范圍的方式:{}與&,@,=等,但是無法正常工作。 有任何想法嗎? 我知道pleaseBindTo屬性必須在某個地方捕獲,但是我不知道在哪里或如何。

一些觀察:
1.您的指令是一個屬性2.您正在將值傳遞給屬性本身。

也許您應該將指令更改為元素。 重寫代碼,如下所示:

<jqslider pleaseBindTo="firstValue"></jqslider>

刪除div並將指令直接用作元素。 接下來,在指令的定義中,編寫以下內容:

myAppModule.directive('jqslider', function() {
    return {
        scope: {
            pleaseBindTo: "=pleaseBindTo"
        }
        link:function(scope, element, attrs) {
            element.slider({
                range: false,
                min: scope.pleaseBindTo.min,
                max: scope.pleaseBindTo.max,
                value: scope.pleaseBindTo.v,
                slide: function( event, ui ) {
                    scope.pleaseBindTo.v = ui.value;
                    scope.$apply();
                }
            });
        }
    };
 });

如果您仍然希望將該指令保留為屬性,則可以嘗試使用pleaseBindTo語句attrs.pleaseBindTo鏈接函數中pleaseBindTo的值-我不確定,需要檢查一下。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM