我想在LS HTML中使用Button动作事件稍微违背内置导航框架。
具体来说,让LS自动从一个AddEditScreen导航到另一个AddEditScreen,由此Button事件触发。
诀窍就是这个 - 我需要它导航到"下一个项目的AddEditScreen"在浏览屏幕列表中,不返回浏览屏幕。
示例:
选择项目' ABC01'在浏览屏幕上>导航到' ABC01'的AddEditScreen; >编辑' ABC01' >完成编辑后,触发一个事件,使LS能够直接导航到AddEditScreen,以便 ABC02 '从浏览屏幕列表中。
我对这个事件的内容持开放态度。一个按钮......什么都没有。
我创建了一个按钮并选择了“编写我自己的方法”#。
这看起来是否接近可行的代码,或LS是否需要获得' ABC01'来自某种类型的查询?
myapp.AddEditHoldingInventory.Method_execute = function (screen) {
// Write code here.
var navigateToNextScreen = function (Method) {
return screen.getStrRqsNum().then(function (StrRqsNum) {
if (!!StrRqsNum) {
return myapp.applyChanges().then(function () {
var paramValue = (Number(StrRqsNum) += 1).toString();
return myapp.ShowAddEditHoldingInventory(id);
}
});
});
}
上面的代码由我修改,我不是程序员或开发人员。这是我收集的作品的片段,我正在努力理解。
代码正在尝试什么'悲惨的'实现,是:
获取StrRqsNumber的值>保存在屏幕上进行的编辑>将+1添加到StrRqsNumber的值>使用新值导航到记录的AddEditSCreen。
StrRqsNumber =具有值的列。它是唯一的并且标识资产。这很可能不是实现我想要实现的目标的最佳方式,所以我在这里寻求建议。我不必将此作为参数,只要我可以点击下一个项目'从列表中。
非常感谢您的任何意见。我会因为这种行为而发挥作用。
答案 0 :(得分:0)
这个问题由joshbooker解决了。这是解决方案,只需要最少的项目特定剪裁......
"问题 投票有帮助 0 投票 我想要实现的是这个,例如:
浏览屏幕>在列表中选择项目1 of 15>在项目1的AddEditScreen上扫描我们需要的信息>点击“触发器”,让LS自动保存该编辑,然后导航到15的项目2的AddEditScreen>等等。
以下是一个有效的解决方案:
/// <reference path="~/GeneratedArtifacts/viewModel.js" />
myapp.BrowseHoldingInventories.selectNextStrRqsNum_execute = function (screen)
{///custom screen method to set selected item to next StrRqsNum
//calc next num
var nextNum = (Number(screen.HoldingInventories.selectedItem.StrRqsNum) + 1).toString();
// iterate collection data to find the next item
var nextItem = msls.iterate(screen.HoldingInventories.data)
.where(function (i)
{
return i.StrRqsNum == nextNum;
}).first();
if (nextItem)
{ //if found - select the item & return true
screen.HoldingInventories.selectedItem = nextItem;
return true;
}
else
{ //not found - return false
return false;
};
};
myapp.BrowseHoldingInventories.TapMethod_execute = function (screen) {
// tap method of list item on browse screen.
//handy way to save/set scroll position
var scrollTopPosition = $(window).scrollTop();
//currently selected item
var item = screen.HoldingInventories.selectedItem;
//showAddEditScreen - pass item
// beforeShown: setup binding on FieldB
//afterClosed: if commit & select next then recurse
myapp.showAddEditHoldingInventory(item, {
beforeShown: function (addEditScreen)
{//this executes before the screen is shown
//find the trigger field
var contentItem = addEditScreen.findContentItem("FieldB");
if (contentItem)
{ //databind to catch value change
contentItem.dataBind(contentItem.bindingPath, function(newValue){
if (newValue && contentItem.oldValue && newValue != contentItem.oldValue)
{ //if change then commit - this triggers close of addEditScreen
myapp.commitChanges();
}
contentItem.oldValue = newValue;
});
}
},
afterClosed: function (addEditScreen, navigationAction)
{//this executes after the screen is closed
//scroll browse screen to where we left off
$(window).scrollTop(scrollTopPosition);
//if commit
if (navigationAction == msls.NavigateBackAction.commit)
{ //try to select next item in list
if (myapp.BrowseHoldingInventories.selectNextStrRqsNum_execute(screen) == true)
{ //next item selected then recurse
myapp.BrowseHoldingInventories.TapMethod_execute(screen);
}
}
}
});
};
&#13;
&#34;