Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 角带。Popover编程使用_Angularjs_Angularjs Directive_Angular Strap - Fatal编程技术网

Angularjs 角带。Popover编程使用

Angularjs 角带。Popover编程使用,angularjs,angularjs-directive,angular-strap,Angularjs,Angularjs Directive,Angular Strap,我试图以编程方式创建popover,但面临以下问题。我无法访问popover模板内的父作用域。预期结果是: Hello my name is Roman 但我明白了 Hello my name is undefined 这是 如果我在任何元素上使用bspopover作为属性,那么我将得到预期的结果 <!DOCTYPE html> <html> <head> <link rel="stylesheet" href="http://maxcdn.

我试图以编程方式创建popover,但面临以下问题。我无法访问popover模板内的父作用域。预期结果是:

Hello my name is Roman
但我明白了

Hello my name is undefined
这是

如果我在任何元素上使用
bspopover
作为属性,那么我将得到预期的结果

<!DOCTYPE html>
<html>
<head>
    <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css">
    <title>Popover issue</title>
</head>

<body>
<div data-ng-app="myApp" data-ng-controller="defaultCtrl" style="margin: 100px 100px">
    <button custom-popover ng-click="showPopover()">Popover</button>

    <script type="text/ng-template" id="example.html">
        <p>My name is {{user.name || 'undefined' }}</p>
    </script>
</div>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.5/angular.min.js"></script>
<script src="//code.angularjs.org/1.3.8/angular-sanitize.min.js" data-semver="1.3.8"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-strap/2.1.5/angular-strap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-strap/2.1.5/angular-strap.tpl.min.js"></script>
<script type="text/javascript">
    var app = angular.module("myApp", ['mgcrea.ngStrap', 'ngSanitize']);
    app.controller("defaultCtrl", ["$scope", function($scope) {
        $scope.user = {
            name: "Roman"
        };
    }]);
    app.directive("customPopover", ["$popover", "$compile", function($popover, $compile) {
        return {
            restrict: "A",
            scope: true,
            link: function(scope, element, attrs) {
                var myPopover = $popover(element, {
                    title: 'My Title',
                    contentTemplate: 'example.html',
                    html: true,
                    trigger: 'manual',
                    autoClose: true
                });
                scope.showPopover = function() {
                    myPopover.show();
                }
            }
        }
    }]);
</script>
</body>
</html>

爆米花问题
爆米花
我的名字是{{user.name | |'undefined'}}

var app=angular.module(“myApp”,“mgcrea.ngStrap”,“ngSanitize”); app.controller(“defaultCtrl”、[“$scope”、函数($scope){ $scope.user={ 姓名:“罗马” }; }]); app.directive(“customPopover”、[“$popover”、“$compile”、函数($popover、$compile){ 返回{ 限制:“A”, 范围:正确, 链接:函数(范围、元素、属性){ var myPopover=$popover(元素{ 标题:“我的标题”, contentTemplate:'example.html', 是的, 触发器:“手动”, 自动关闭:正确 }); scope.showPopover=函数(){ myPopover.show(); } } } }]);
感谢您的建议

结帐

原型继承是angular中作用域的默认继承

因此,如果您不创建隔离作用域,那么您可以直接从您的作用域访问父作用域对象,除非您不重写它们

 var myPopover = $popover(element, {
                    title: 'My Title',
                    contentTemplate: 'example.html',
                    html: true,
                    trigger: 'manual',
                    autoClose: true,
                    scope: scope
                });
                scope.showPopover = function() {
                    myPopover.show();
                }

很好,谢谢,但是为什么这个选项(范围)没有呢?是的,文档中没有。但在代码中,$popover在内部使用$tooltip。$tooltip provider
var scope=$tooltip.$scope=options.scope&&options.scope.$new()| |$rootScope.$new()中有一行。所以,如果您在选项中传递范围,它将从中创建一个新范围。否则它将从rootscope.OK创建新范围。下次我会在发帖之前检查源代码。