我试图从变量中设置IFRAME的src属性,但我无法使其工作……

标记:

<div class="col-xs-12" ng-controller="AppCtrl">

    <ul class="">
        <li ng-repeat="project in projects">
            <a ng-click="setProject(project.id)" href="">{{project.url}}</a>
        </li>
    </ul>

    <iframe  ng-src="{{trustSrc(currentProject.url)}}">
        Something wrong...
    </iframe>
</div>

控制器/app.js:

function AppCtrl ($scope) {

    $scope.projects = {

        1 : {
            "id" : 1,
            "name" : "Mela Sarkar",
            "url" : "http://blabla.com",
            "description" : "A professional portfolio site for McGill University professor Mela Sarkar."
        },

        2 : {
            "id" : 2,
            "name" : "Good Watching",
            "url" : "http://goodwatching.com",
            "description" : "Weekend experiment to help my mom decide what to watch."    
        }
    };

    $scope.setProject = function (id) {
        $scope.currentProject = $scope.projects[id];
        console.log( $scope.currentProject );

    }
}

使用这段代码时,不会在iframe的src属性中插入任何内容.只是一片空白.

Update 1:

Update 2:

Update 3:

$scope.setProject = function (id) {
    $scope.currentProject = $scope.projects[id];
    $scope.currentProjectUrl = $sce.trustAsResourceUrl($scope.currentProject.url);
    console.log( $scope.currentProject );
    console.log( $scope.currentProjectUrl );

}

这似乎解决了我的问题,尽管我不太清楚为什么.

推荐答案

我怀疑在看摘录时,trustSrc(currentProject.url)中的函数trustSrc没有在控制器中定义.

You need to inject the $sce service in the controller and trustAsResourceUrl the url there.

在控制器中:

function AppCtrl($scope, $sce) {
    // ...
    $scope.setProject = function (id) {
      $scope.currentProject = $scope.projects[id];
      $scope.currentProjectUrl = $sce.trustAsResourceUrl($scope.currentProject.url);
    }
}

在模板中:

<iframe ng-src="{{currentProjectUrl}}"> <!--content--> </iframe>

Javascript相关问答推荐

在JavaScript中逐一播放随机生成的音频文件数组

如何在react + react路由域名中使用DeliverBrowserRouter?

如何expose 像React在onChange、onClick等中所做的那样的参数?

有什么(最佳)方法可以从模块中获取脚本模块的多姆元素吗?

使用useup时,React-Redux无法找到Redux上下文值

传递一个大对象以在Express布局中呈现

被CSS优先级所迷惑

使用i18next在React中不重新加载翻译动态数据的问题

为什么ngModel不能在最后一个版本的Angular 17上工作?'

如何在不创建新键的情况下动态更改 map 中的项目?

在grafana情节,避免冲突的情节和传说

如何让npx在windows中运行js脚本?

并不是所有的iframe都被更换

加载背景图像时同步旋转不显示的问题

VUE 3捕获错误并呈现另一个组件

以Angular 实现ng-Circle-Progress时出错:模块没有导出的成员

如何将数组用作复合函数参数?

AddEventListner,按键事件不工作

处理TypeScrip Vue组件未初始化的react 对象

有没有办法通过使用不同数组中的值进行排序