我的问题:我有一个输入供用户输入新的推文发布到Twitter。但是,在ng-click之后执行函数postTweet()时,$ scope.newStatus在到达工厂时似乎是空的。 (如console.log中所示)。在尝试传递$ scope.newStatus作为postTweet工厂函数的status参数时,我做错了什么?
旁注。如果我在控制器中定义$ scope.newStatus ='testing 123',它可以正常工作。
非常感谢所有帮助。
<input type="text" ng-model="newStatus" placeholder="enter new tweet"> {{newStatus}}
<button ng-click="postTweet()">
工厂:
'use strict';
angular
.module('m01-profile')
.factory('Profile', [
'$http', '$q', 'apiRef', 'Authentication',
function($http, $q, apiRef, Authentication) {
var authentication = Authentication.data.authData;
var service = {
postTweet: function(newStatus){
console.log(newStatus);
var deferred = $q.defer();
var requestObject = {
headers: { 'Content-Type' : 'application/json' },
token: authentication.twitter.accessToken,
tokenSecret: authentication.twitter.accessTokenSecret,
status: newStatus
};
$http.post(apiRef + 'twitter/update_status', requestObject)
.success(function(data, status, headers, config) {
deferred.resolve(newStatus);
}).
error(function(data, status, headers, config) {
deferred.reject('Unable to post new status to twitter');
});
return deferred.promise;
}
};
return service;
}]);
控制器
'use strict';
angular
.module('m01-profile')
.controller('ProfileController', [
'$scope', '$log', 'Profile',
function($scope, $log, Profile) {
$scope.postTweet = function(){
Profile.postTweet($scope.newStatus).then(function(success){
}, function(error){
});
};
}
]);
答案 0 :(得分:0)
尝试这样的事情:
<强>控制器:强>
'use strict';
angular
.module('m01-profile')
.controller('ProfileController', ['$scope', '$log', 'Profile',
function($scope, $log, Profile) {
$scope.tweet = {
newStatus = ''
};
$scope.postTweet = function(){
Profile.postTweet($scope.tweet.newStatus).then(function(success){
}, function(error){
});
};
}
]);
<强> HTML:强>
<input type="text" ng-model="tweet.newStatus" placeholder="enter new tweet"> {{newStatus}}
<button ng-click="postTweet()">
正如有人已经评论过,为了获得角度的双向数据绑定,您需要将ng-model
绑定到对象属性而不是字符串原语。
在原始代码中,input
并未更新$scope.newStatus
变量,因为ng-model
已绑定到字符串原语。