使用状态“onEnter”功能触发控制器内部的功能

时间:2016-09-21 02:43:42

标签: javascript jquery angularjs

所以我的导航使用角度状态。每当您单击菜单中的某个项目时,它会触发一个更改头部图片的功能,以便每个页面标题上都有不同的图片。当有人在网站的主页上启动并仅通过点击导航时,这种方法很有效,但是当您输入网址时,该功能不会被触发。我正在尝试使用onEnter()来触发它,这样我就可以放弃点击,它可以在两种情况下工作,但看起来我有范围问题,并且可以真正使用一些指导。

app.directive("mainNav", function() {
    return {
        restrict: "E",
        templateUrl: "js/main-nav.html",
        controller: function() {
        this.tab = tabbytab;

        this.isSet = function(checkTab) {
            return this.tab === checkTab;
        };

        this.setTab = function(activeTab) {
            tabbytab = activeTab;
            window.fbAsyncInit();
        };
        this.imageArray = navImages;
        //minus 1 because tabbytab starts at 1 and the array doesnt of course
        this.currentImage = navImages[(tabbytab - 1)].image;
        console.log(tabbytab);
        this.setImage = function(activeTab) {
            this.currentImage = this.imageArray[tabbytab].image;
        };
    },
    controllerAs: "tab"
};
});

这是我的州

.state('home', {
        url: "/home",
        templateUrl: "js/home.html",
        onEnter: function() {
          tab.setTab(1);
          console.log("on enter function triggered");
        }
    })

1 个答案:

答案 0 :(得分:0)

您能否通过范围问题更多地解释一下您的意思?究竟是怎么回事?

另一种可能稍微复杂一点的方法是使用$ routeParams https://docs.angularjs.org/api/ngRoute/service/。基本上,您可以从路径(url)中提取参数并根据URL显示图像。