1

Facebook フィード ダイアログのディレクティブを作成していて、アイテム タイトルをディレクティブに追加しようとしていますが、{{current_hotel_title}} の文字列にスペースが含まれている場合は常に angularjs が次のエラーをスローすることに気付きました。

Uncaught Error: Syntax Error: Token 'word2' is an unexpected token at column 4 of the expression [word1 word2] starting at [word2]. 

指令:

.directive('fb2Share', function(){
    return function(scope, element, attrs){

        attrs.$observe('fb2Share', function(value) {

            //Directive click handler
            $(element).click(function(){
                scope.$watch(attrs.fb2Title, openDialog);
            });

            //Open FB feed dialog
            var openDialog = function() {

                console.log(attrs.fb2Title);
            };
        });

    };
})

HTML:

<a href="javascript:void(0);" data-fb2-share data-fb2-title="{{current_hotel_title}}">Share on Facebook</a>

現在のホテルのタイトルに一重引用符を追加すると、次のようになります。

data-fb2-title="'{{current_hotel_title}}'"

エラーは表示されなくなりましたが、FB共有ダイアログで不要な単一引用符が表示されるという問題があります。

4

1 に答える 1

0

単純に補間された属性値を表示しようとしている場合、必要なのは次のとおりです。

attrs.$observe('fb2Title', function(value){
    console.log(value);
    // or
    console.log(attrs.fb2Title);   
}

しかし、あなたの場合は、ng-clickボタン/hrefで単純なものを使用できます。ng-click は {{current_hotel_title}} をパラメーターとしてクリック関数に渡します。

<a href="javascript:void(0);" ng-click="myClickFunction(current_hotel_title)">GO</a>

デモ

実際には、おそらくディレクティブは必要なく、コントローラーにクリック ハンドラーを配置するだけです。

于 2013-07-14T18:46:21.113 に答える