使用Factory的AngularJS控制器之间的数据持久性

时间:2018-07-12 16:35:14

标签: angularjs electron

我的目标是将地址从一个页面传递到某个网站,然后在Electron <webview>容器中打开。我正在使用AngularJS来做到这一点。当我尝试从portalFactory.get()访问portalViewController时,似乎正在发生问题。我在portalController中设置了值,随后可以从该控制器成功调用portalFactory.get(),但似乎无法从另一个控制器成功调用,如下所示。

还值得注意的是,我在Angular方面相对较新,所以这可能是一件小事,我做错了。现在,我只是想让它成功打印值,然后再继续将<webview> src设置为该值。

我有以下代码提示:

core.js:

var portal = angular.module('portal', []);
var new_portal;

portal.controller('portalController', function ($scope, portalFactory) {

    $scope.onSubmit = function() {
        let window = require('electron').remote.BrowserWindow;

        portalFactory.set($scope.portal_domain.toString()); // accessing portal_domain ng-model successfully

        new_portal = new window({
            title: 'New Portal Window'
        });

        new_portal.loadURL(path.join('file://', __dirname, '/../pages/portal.html')); //load portal.html page... relevant pieces shown below
    }
});

portal.controller('portalViewController', function($scope, portalFactory) {
    console.log(portalFactory.get());
});

portal.factory('portalFactory', function() {
    var src = "";

    function set(data) {
        src = data;
    }

    function get() {
        return src;
    }
    return {
        set: set,
        get: get
    };
});

相关的portal.html:

<webview
    name="content_panel"
    class="hide"
    preload="../../preload.js"
    src=""
    style="height: 100vh; width: 100vw"
></webview>


<script src="../../renderer.js"></script>

这里的结果是在我的控制台中记录了一个空字符串,这使我相信该值正在控制器之间重置,这不是我想要的。

感谢您可以提供的任何帮助,如果您还有其他需要我上载/添加/回答的问题,请告诉我。

0 个答案:

没有答案