1

我正在为 facebook feed 对话框创建一个指令,并且我正在尝试将项目标题添加到指令中,但是我注意到只要 {{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}} 作为参数传递给 click 函数。

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

演示

实际上,您可能甚至不需要指令 - 只需将点击处理程序放在控制器中即可。

于 2013-07-14T18:46:21.113 回答