0

名前のキーと値のペア、topChannelUserNames、および topChannelIds を含む dict (チャネル) を渡そうとしています。最後の 2 つは文字列の配列です。var ストリームに渡された正しい値が表示されていますが、ポップオーバーのコンテンツであるチャネル変数に反映されていません。ストリームを channelinfo ディレクティブに正しく渡すにはどうすればよいですか??

参考までに、チャネルはサーバー呼び出しから非同期的にスコープに入力されるため、ディレクティブが評価されるときは使用できないため、scope.$watch 呼び出しが行われます。

また、templateUrl が機能していないように見えるので、HTML テンプレート全体を channelinfo ディレクティブに含めています。

HTML コード:

<li><a popover="" rel="popover" data-placement="right" data-trigger="hover" stream="channels.comedy_talkshow" href="#/channel/comedy_talkshow">Talk Show</a></li>

Javascript コード:

blissApp.directive('popover', function($compile) {
return {
    restrict: 'A',
    scope: {
        stream: "="
    },
    link: function(scope, element, attrs)
    {
        var stream;

        scope.$watch('stream', function(newValue, oldValue) {
            stream = newValue;
            console.log('attribute = ' + stream);

        var ele = angular.element("<channelinfo data='stream'></channelinfo>");            
        var channel = $compile(ele)(scope);           
        console.log('content = ' + channel);
        $(element).popover({position: 'right', trigger: 'hover', placement: "right", content: channel});
        }, true);
    }
}
});

blissApp.directive('channelinfo' , function() {
return {
    restrict: 'E',
    scope: {data: "="},
    template: '<div style="padding:0px"> <div><span ng-repeat="thumbUrl in data.topChannelIds"> <img style="width:70px; height:70px; float:left;" src="https://i.ytimg.com/i/{{thumbUrl}}/mq1.jpg"/></span> <p style="color:#333; float:left">Including channels: <span ng-repeat="name in data.topChannelUserNames"> {{name}}<span ng-show=" ! $last ">, </span></span></p></div></div>'
    //templateUrl: 'template/popover/popover.html'
}
});
4

0 に答える 0