var vm =在这种情况下不起作用

时间:2017-04-20 14:42:56

标签: angularjs ionic-framework

我使用的是控制器,我想知道为什么在这种情况下,var vm = this不起作用(我的猜测是它对离子相关的东西不起作用):< / p>

function TutorialCtrl($scope, $state, $ionicSlideBoxDelegate, $ionicSideMenuDelegate) {

    var vm = this;
    vm.title = 'yo';

    vm.next = function() {
      $ionicSlideBoxDelegate.next();
    };

    // Called each time the slide changes
    vm.slideChanged = function(index) {
      vm.slideIndex = index;
    };
  }

它适用于$ scope,ofcourse。我的绑定实际上适用于我的测试:vm.title(它在我的视图中正确显示)。
无法找到相关信息,有人可以解释一下吗?我希望摆脱所有的范围,但有时我不能。谢谢 !

编辑:我发现了我的错误!在我看来,我忘了添加vm。在我的方法上...当然它无法奏效! :P

2 个答案:

答案 0 :(得分:0)

我也更喜欢使用控制器作为语法并在控制器中删除对$scope的引用(最终更新到Angular2及更高版本)。我喜欢使用控制器实现控制器的方式类似于上面所描述的几个调整。如您所见,不再需要导入$scope,这应该使您的模板中的功能可用。

function TutorialCtrl($state, $ionicSlideBoxDelegate, $ionicSideMenuDelegate) {

    var vm = {};
    vm.title = 'yo';

    vm.next = function() {
        $ionicSlideBoxDelegate.next();
    };

    // Called each time the slide changes
    vm.slideChanged = function(index) {
        vm.slideIndex = index;
    };

    return vm;
}

答案 1 :(得分:0)

我发现了我的错误:在我看来,我忘了将vm绑定到我的方法上(即  :vm.mymethod)。显然它无法正常工作....现在一切都好。