0
Salesforceを更新する際に問題があります。 イベントブラーでは、テーブルセルの新しい結果が必要で、角度コントローラーに渡してから、salesforceで連絡先を更新します。監視なしでは、選択されたオブジェクトをエラーなしでリモートアクションに渡しますが、編集されたフィールドではなく初期のものです。私はこの記事http://blogs.microsoft.co.il/choroshin/2014/03/26/angularjs-watch-for-changes-in-specific-object-property/を参考にして時計を追加しようとしましたが、 "$ scope.ContactData.mapは関数ではありません"というエラーが表示されます。角度コントローラの可変パラメータを見る方法
マイ角度コントローラ
var app = angular.module('MyApp',[]);
app.controller('myController',function($scope,VFRemotingFactory){
$scope.mcm = {};
VFRemotingFactory.getData().then(
function(result){
$scope.ContactData = result;
}
);
$scope.$watch(function($scope) {
return $scope.ContactData.map(function(obj) {
return obj.FirstName
});
},
function (newVal) {},
true);
$scope.orderByMe = function(x) {
$scope.myOrderBy = x;
}
$scope.editMe = function (obj) {
obj.target.setAttribute("contenteditable", true);
obj.target.focus();
}
$scope.NotEditMe = function (obj, contact){
obj.target.setAttribute("contenteditable", false);
UpdateContact(contact);
});
app.factory('VFRemotingFactory',function($q,$rootScope){
var factory = {};
factory.getData = function(searchText){
var deferred = $q.defer();
GetAllContactsByFilter(function(result){
$rootScope.$apply(function(){
deferred.resolve(result);
});
}, searchText);
return deferred.promise;
}
return factory;
});
function GetAllContactsByFilter(callback, searchText){
if(searchText == undefined){
searchText = '';
}
Visualforce.remoting.Manager.invokeAction('{!$RemoteAction.ContactsController.GetAllContactsByFilter}',
searchText,
callback,
{escape: false}
);
}
function UpdateContact(Contact){
Visualforce.remoting.Manager.invokeAction('{!$RemoteAction.ContactsController.UpdateContact}',
Contact,
function(result,event){},
{escape: false}
);
}
</script>
マイページ
<tr ng-repeat="contactVar in ContactData | orderBy:myOrderBy | filter:mcm.searchText"/>
<td contenteditable="false" ng-dblclick="editMe($event)" ng-blur="NotEditMe($event,contactVar)"> {{contactVar.FirstName}}</td>
<td contenteditable="false" ng-dblclick="editMe($event)" ng-blur="NotEditMe($event,contactVar)"> {{contactVar.LastName}}</td>
<td contenteditable="false" ng-dblclick="editMe($event)" ng-blur="NotEditMe($event,contactVar)"> {{contactVar.Phone}}</td>
そして、私のリモートコントローラー
public class ContactsController {
@RemoteAction
public static List<Contact> GetAllContactsByFilter(String searchText){
String searchString = '%' + searchText + '%';
List<Contact> contactList = [SELECT FirstName, LastName, Phone, Email, Title, Account.Name FROM Contact];
return contactList;
}
@RemoteAction
public static void UpdateContact(String contact){
System.debug(contact);
Contact contactForUpdate = new Contact();
contactForUpdate.FirstName = contact.substringBetween('FirstName=', ',');
contactForUpdate.LastName = contact.substringBetween('LastName=', ',');
contactForUpdate.Phone = contact.substringBetween('Phone=', ',');
}
}
可能な重複http://stackoverflow.com/questions/11703477/pass-variables-to-angularjs-controller-best -練習) –