我想简单地在isCreating === true
时显示带有ng-if的侧边栏。 ng-click事件来自nmNav
指令,该指令绑定到与状态NotesController
相同的控制器。
但似乎我没有设法将范围传递给ui-view
,但我已经声明控制器是NotesController
。
我的意思是isCreating
在调用startCreating()
时在ui-view之外的范围内变为真。
▶︎将变量设置为$ rootScope时,一切正常
我做错了什么? 这是所有相关代码......
notesMan-app.js
angular.module('NoteMan', [
'ui.router',
'ngAnimate',
'notes'
])
.config(function ($stateProvider, $urlRouterProvider, $locationProvider) {
$stateProvider
.state('notes', {
url: '/',
templateUrl: 'app/components/notes/notes.tmpl.html',
controller: 'NotesController',
controllerAs: 'notesCtrl',
})
.state('note', {
url: '/note/:title',
templateUrl: 'app/components/notes/singleNote/notes-singleNote.tmpl.html',
controller: 'NotesController',
controllerAs: 'notesCtrl',
params: {
title: null
}
});
$urlRouterProvider.otherwise('/'); // when no routematch found redirect to /view1
$locationProvider.html5Mode(true);
})
.controller('NotesController', function ($scope, $stateParams, $state, $http) {
var vm = this;
$scope.isEditing = false;
$scope.isCreating = false;
function showCreating() {
return $scope.isCreating && !$scope.isEditing;
}
function startCreating() {
$scope.isCreating = true;
$scope.isEditing = false;
showCreating();
}
//Define methods
$scope.startCreating = startCreating;
//Get notes from an external file
$http.get('./app/API/notes.json').then(function (res) {
vm.notes = res.data;
});
});
menu.js
angular.module('NoteMan')
.directive('nmNav', function() {
return {
replace:true,
restrict: 'E',
templateUrl: 'app/common/menu/menu.tmpl.html',
controller: 'NotesController as notesCtrl',
link: function (scope, elem, attr){
console.log(scope);
}
};
});
答案 0 :(得分:0)
我无法在你的代码中找到对“startCreating”的调用。
以下是我的猜测
a - 要么你没有将控制器指定为调用方法“startCreating”的容器元素的“NotesController”
b-或者你错误地控制了“NotesController”或方法“startCreating”的名称
c-或者您错过了前缀$ scope来调用方法“startCreating”
请检查并确认