Javascript AngularJS-无法从ng模型到控制器获取值
我尝试使用angular的ng模型来存储它的值,并使用ng单击将值传递给控制器。对于我当前的代码,我总是收到未定义的值。我做错了什么 HTML 路线Javascript AngularJS-无法从ng模型到控制器获取值,javascript,angularjs,ionic-framework,ionic,Javascript,Angularjs,Ionic Framework,Ionic,我尝试使用angular的ng模型来存储它的值,并使用ng单击将值传递给控制器。对于我当前的代码,我总是收到未定义的值。我做错了什么 HTML 路线 .config(function($stateProvider, $urlRouterProvider) { $urlRouterProvider.otherwise('/feeds') $stateProvider .state('login', { url: '/', templateUrl: 'tem
.config(function($stateProvider, $urlRouterProvider) {
$urlRouterProvider.otherwise('/feeds')
$stateProvider
.state('login', {
url: '/',
templateUrl: 'templates/login.html',
controller: 'LoginController'
})
.state('profile', {
url: '/profile',
templateUrl: 'templates/profile.html',
controller: 'ProfileController'
})
.state('feeds', {
url: '/feeds',
templateUrl: 'templates/feeds.html',
controller: 'FeedsController'
})
.state('post', {
url: '/post',
templateUrl: 'templates/post.html',
controller: 'PostController'
})
})
我认为如果您将所有内容都包装在ng控制器中,那么您的代码应该可以工作:
<div ng-controller="MyController">
<!-- your HTML here -->
</div>
在JSFiddle上查看它:我认为如果您将所有内容都打包到
ng controller中,那么您的代码应该可以工作:
<div ng-controller="MyController">
<!-- your HTML here -->
</div>
在JSFiddle上查看它:我认为如果您将所有内容都打包到ng controller中,那么您的代码应该可以工作:
<div ng-controller="MyController">
<!-- your HTML here -->
</div>
在JSFiddle上查看它:我认为如果您将所有内容都打包到ng controller中,那么您的代码应该可以工作:
<div ng-controller="MyController">
<!-- your HTML here -->
</div>
在JSFIDLE上查看它:正如评论中提到的,我相信您的问题与范围界定有关。ion content指令可能正在使用一个隔离的作用域,因此在其内部设置一个值不会影响其外部的作用域
克服这些问题(以及更多)的一种方法是使用控制器作为语法
发生这种情况的另一个原因是没有人初始化提要对象。如果feed未定义,则不能只执行feed.status='sth'。您需要先初始化提要
试着做一些类似的事情:
.state('post', {
url: '/post',
templateUrl: 'templates/post.html',
controller: 'PostController',
controllerAs: 'vm'
})
在控制器中:
.controller("PostController", function($http, $localStorage, $location){
var vm = this;
vm.feed = {}; //initialise feed object
$http.get("https://graph.facebook.com/v2.2/me", { params: { access_token: $localStorage.accessToken, fields: "id, location, picture", format: "json" }}).then(function(result) {
vm.profileData = result.data;
console.log( result.data);
}, function(error) {
alert("There is a problem with your profile");
console.log(error);
});
vm.post = function(data){
console.log(data);
}
});
然后在模板中尝试:
<div>
<ion-content>
<div class="list">
<label class="item item-input">
<textarea ng-model="vm.feed.status"></textarea>
</label>
</div>
</ion-content>
<div class="tabs tabs-icon-left">
<a class="tab-item" ng-click="vm.post(vm.feed)">
<i class="icon ion-arrow-right-b"></i>
</a>
</div>
</div>
让我们知道它是否有效如评论中所述,我相信您的问题与范围界定有关。ion content指令可能正在使用一个隔离的作用域,因此在其内部设置一个值不会影响其外部的作用域
克服这些问题(以及更多)的一种方法是使用控制器作为语法
发生这种情况的另一个原因是没有人初始化提要对象。如果feed未定义,则不能只执行feed.status='sth'。您需要先初始化提要
试着做一些类似的事情:
.state('post', {
url: '/post',
templateUrl: 'templates/post.html',
controller: 'PostController',
controllerAs: 'vm'
})
在控制器中:
.controller("PostController", function($http, $localStorage, $location){
var vm = this;
vm.feed = {}; //initialise feed object
$http.get("https://graph.facebook.com/v2.2/me", { params: { access_token: $localStorage.accessToken, fields: "id, location, picture", format: "json" }}).then(function(result) {
vm.profileData = result.data;
console.log( result.data);
}, function(error) {
alert("There is a problem with your profile");
console.log(error);
});
vm.post = function(data){
console.log(data);
}
});
然后在模板中尝试:
<div>
<ion-content>
<div class="list">
<label class="item item-input">
<textarea ng-model="vm.feed.status"></textarea>
</label>
</div>
</ion-content>
<div class="tabs tabs-icon-left">
<a class="tab-item" ng-click="vm.post(vm.feed)">
<i class="icon ion-arrow-right-b"></i>
</a>
</div>
</div>
让我们知道它是否有效如评论中所述,我相信您的问题与范围界定有关。ion content指令可能正在使用一个隔离的作用域,因此在其内部设置一个值不会影响其外部的作用域
克服这些问题(以及更多)的一种方法是使用控制器作为语法
发生这种情况的另一个原因是没有人初始化提要对象。如果feed未定义,则不能只执行feed.status='sth'。您需要先初始化提要
试着做一些类似的事情:
.state('post', {
url: '/post',
templateUrl: 'templates/post.html',
controller: 'PostController',
controllerAs: 'vm'
})
在控制器中:
.controller("PostController", function($http, $localStorage, $location){
var vm = this;
vm.feed = {}; //initialise feed object
$http.get("https://graph.facebook.com/v2.2/me", { params: { access_token: $localStorage.accessToken, fields: "id, location, picture", format: "json" }}).then(function(result) {
vm.profileData = result.data;
console.log( result.data);
}, function(error) {
alert("There is a problem with your profile");
console.log(error);
});
vm.post = function(data){
console.log(data);
}
});
然后在模板中尝试:
<div>
<ion-content>
<div class="list">
<label class="item item-input">
<textarea ng-model="vm.feed.status"></textarea>
</label>
</div>
</ion-content>
<div class="tabs tabs-icon-left">
<a class="tab-item" ng-click="vm.post(vm.feed)">
<i class="icon ion-arrow-right-b"></i>
</a>
</div>
</div>
让我们知道它是否有效如评论中所述,我相信您的问题与范围界定有关。ion content指令可能正在使用一个隔离的作用域,因此在其内部设置一个值不会影响其外部的作用域
克服这些问题(以及更多)的一种方法是使用控制器作为语法
发生这种情况的另一个原因是没有人初始化提要对象。如果feed未定义,则不能只执行feed.status='sth'。您需要先初始化提要
试着做一些类似的事情:
.state('post', {
url: '/post',
templateUrl: 'templates/post.html',
controller: 'PostController',
controllerAs: 'vm'
})
在控制器中:
.controller("PostController", function($http, $localStorage, $location){
var vm = this;
vm.feed = {}; //initialise feed object
$http.get("https://graph.facebook.com/v2.2/me", { params: { access_token: $localStorage.accessToken, fields: "id, location, picture", format: "json" }}).then(function(result) {
vm.profileData = result.data;
console.log( result.data);
}, function(error) {
alert("There is a problem with your profile");
console.log(error);
});
vm.post = function(data){
console.log(data);
}
});
然后在模板中尝试:
<div>
<ion-content>
<div class="list">
<label class="item item-input">
<textarea ng-model="vm.feed.status"></textarea>
</label>
</div>
</ion-content>
<div class="tabs tabs-icon-left">
<a class="tab-item" ng-click="vm.post(vm.feed)">
<i class="icon ion-arrow-right-b"></i>
</a>
</div>
</div>
并让我们知道它是否有效发布您的完整代码controller@entre当然Updated在HTML中声明的ng controller
在哪里?请使用controller as
语法。这使得在不同范围内处理变量的麻烦变得容易多了@GeneLim您可以在UIRouter声明中使用更多属性,特别是controllerAs:“vm”发布您的路由器的完整代码controller@entre当然Updated在HTML中声明的ng controller
在哪里?请使用controller as
语法。这使得在不同范围内处理变量的麻烦变得容易多了@GeneLim您可以在UIRouter声明中使用更多属性,特别是controllerAs:“vm”发布您的路由器的完整代码controller@entre当然Updated在HTML中声明的ng controller
在哪里?请使用controller as
语法。这使得在不同范围内处理变量的麻烦变得容易多了@GeneLim您可以在UIRouter声明中使用更多属性,特别是controllerAs:“vm”发布您的路由器的完整代码controller@entre当然Updated在HTML中声明的ng controller
在哪里?请使用controller as
语法。这使得在不同范围内处理变量的麻烦变得容易多了@GeneLim您可以在UIRouter声明中使用更多属性,特别是controllerAs:“vm”。从我从您的链接中读到的内容来看,controllerAs语法确实是一个很大的帮助。我从来没用过,但从现在起我会用的。谢谢,它很管用!您好,我在Ionic中使用controllerAs语法时发现了一个问题。当前有一个bug,可以在此处查看。临时解决方案knwon是控制器:“作为vm的后控制器”。从我从你们的链接中读到的内容来看,controllerAs语法真的能帮上大忙。我从来没用过,但从现在起我会用的。谢谢,它很管用!您好,我在Ionic中使用controllerAs语法时发现了一个问题。当前有一个bug,可以在此处查看。临时解决方案knwon是控制器:“作为vm的后控制器”。从我从你们的链接中读到的内容来看,controllerAs语法真的能帮上大忙。我从来没用过,但从现在起我会用的。谢谢,它很管用!您好,我在Ionic中使用controllerAs语法时发现了一个问题。当前有一个bug,可以在此处查看。暂时的